如何查找列中有多少個值不存在

如何查找列中有多少個值不存在

我一直在試圖弄清楚如何查找列中有多少個不存在的值,即只有一個“。”

例如

汽車.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,作為 提及在評論中:

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

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

相關內容