So finden Sie heraus, wie viele Werte in einer Spalte nicht vorhanden sind

So finden Sie heraus, wie viele Werte in einer Spalte nicht vorhanden sind

Ich habe versucht herauszufinden, wie man herausfindet, wie viele Werte in einer Spalte nicht vorhanden sind, d. h. nur ein "." enthalten.

Zum Beispiel

auto.txt

Car           Colour      mpg          Year
vw_golf         blue       56          2006
vw_polo          red       66          2010
honda_civic    white       .           2007
ford_ka          red       .           2014

Ich interessiere mich also für den Honda Civic und den Ford Ka, da bei ihnen keine Zahl für die MPG-Spalte vorhanden ist und ich herausfinden möchte, wie viele Werte in der MPG-Spalte keinen Wert haben (in diesem Fall 2).

Mein Problem besteht darin, dass bei Verwendung des Awk-Befehls der Punkt Fehler zu verursachen scheint.

Antwort1

KurzgrepAnsatz:

grep -Ec '^\S+\s+\S+\s+\.\s+' file
2

  • -E- erweiterte reguläre Ausdrücke zulassen
  • -c- Drucken Sie eine Anzahl übereinstimmender Zeilen
  • \S+- passt zu Zeichen, die kein Leerzeichen sind. Es handelt sich um ein Synonym für[^[:space:]]
  • \s+- Leerzeichen entsprechen, es ist ein Synonym für[[:space:]]

Antwort2

Eine andere grepMethode, wenn Ihre Datei streng so formatiert ist, dass das MPG in Spalte 28 beginnt:

$ grep '...........................\.' input
honda_civic    white       .           2007
ford_ka          red       .           2014

$ grep -c '...........................\.' input
2

Das sind 28 Punkte (für „beliebiges“ Zeichen), gefolgt von einem Escape-Punkt („einem Punkt“).

Oder mit awk,als erwähntin den Kommentaren:

$ awk '$3 == "."' input
honda_civic    white       .           2007
ford_ka          red       .           2014

$ awk '$3 == "."' input | wc -l
2

verwandte Informationen