我一直在试图弄清楚如何查找列中有多少个不存在的值,即只有一个“。”
例如
汽车.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