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

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

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

例如

汽车.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

相关内容