1列に存在しない値がいくつあるか、つまり「.」が1つしかないかどうかを調べる方法を見つけようとしました。
例えば
車.txt
Car Colour mpg Year
vw_golf blue 56 2006
vw_polo red 66 2010
honda_civic white . 2007
ford_ka red . 2014
だから私が興味を持っているのはHonda CivicとFord kaです。 mpg列に数字がないので、mpg列にmpg列に数字がない値がいくつあるか知りたいです。値(この場合は2)です。
私が経験している問題は、awkコマンドを使用するとエラーが発生しているようです。
答え1
短いgrep
方法:
grep -Ec '^\S+\s+\S+\s+\.\s+' file
2
-E
- 拡張正規表現を許可-c
- 一致する行の数を印刷します。\S+
- 同義語である空白以外の文字と一致します。[^[:space:]]
\s+
- 同義語である空白文字と一致します。[[:space:]]
答え2
別のgrep
方法として、ファイル形式が列28からmpgに厳密に指定されている場合:
$ grep '...........................\.' input
honda_civic white . 2007
ford_ka red . 2014
$ grep -c '...........................\.' input
2
これは、28のピリオド(「すべて」の文字の場合)とエスケープされたピリオド(「ピリオド」)の後に続くものです。
$ awk '$3 == "."' input
honda_civic white . 2007
ford_ka red . 2014
$ awk '$3 == "."' input | wc -l
2