
我一直在試圖弄清楚如何查找列中有多少個不存在的值,即只有一個“。”
例如
汽車.txt
Car Colour mpg Year
vw_golf blue 56 2006
vw_polo red 66 2010
honda_civic white . 2007
ford_ka red . 2014
所以我感興趣的是本田思域和福特 KA,因為它們沒有 mpg 列中的數字,我想找出 mpg 列中有多少個值沒有值(在本例中為2)。
我遇到的問題是當我使用 awk 命令時,期間似乎出現錯誤。
答案1
短的grep
方法:
grep -Ec '^\S+\s+\S+\s+\.\s+' file
2
-E
- 允許擴展正規表示式-c
- 列印匹配行的計數\S+
- 匹配非空白字符,它是同義詞[^[:space:]]
\s+
- 匹配空白字符,它是同義詞[[:space:]]
答案2
另一種grep
方法,如果您的檔案嚴格格式化為 mpg 從第 28 列開始:
$ 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