我有一个包含大量列的文件。作为完整性检查,我想查看是否有任何列的值为 -1
。
使用 awk 的一种简单方法是
cat file.txt | awk '{if($column_no==-1)print}'
我需要为每一列重复这一点。有没有更好的办法?
最佳答案
我可能遗漏了什么,但这不是 grep 的工作吗? grep ' -1 ' file.txt 将返回任何列为 -1 的所有行,假设文件是用空格分隔的。
这还不够清楚,所以还是等宽:
grep ' -1 ' file.txt
-1 前后的空格很重要。
编辑:
好吧,我漏掉了一些东西。如果知道列号很重要,那么一个简单的 for 循环就可以解决问题:
cat file.txt|awk '{for (i=1;i<=NF;i++)if($i==-1) print i}'
NF 是一个内置的 awk 变量,包含记录中的字段数。
SUPEREDIT:考虑到评论,我们有:
awk '{for (i=1;i<=NF;i++)if($i==-1) print NR, i}' file.txt
输出行、列对。根据需要添加您自己的光泽。
关于Linux:列值 checkin 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8756293/