Id, name, currency
101,aaa, 10000
102,BBB,
103,ccc, 20000
我知道我有一个空的单元格货币列。如何使用终端命令找到它?
答案1
假设您的数据如下所示:
Id,name,currency
101,aaa,10000
102,BBB,
103,ccc,20000
然后您可以使用以下命令打印第三个字段中不包含数据的行
$ awk -F , '$3 == ""' file.csv
102,BBB,
命令行上的-F ,
会将输入字段分隔符设置为逗号,因此awk
会将逗号上的每一行拆分为单独的字段。条件$3 == ""
意味着“字段 3 为空”(“空”意味着“甚至不包含空格”),如果是真的,则执行默认操作。默认操作是打印当前行。
您是否还想输出标题行:
$ awk -F , 'NR == 1 || $3 == ""' file.csv
Id,name,currency
102,BBB,
条件的NR == 1 || $3 == ""
意思是“如果这是第一行,或者如果第三个字段为空”。
您想将行号添加到输出的每一行中,请使用
$ awk -F , 'NR == 1 || $3 == "" { print NR, $0 }' file.csv
1 Id,name,currency
3 102,BBB,
在这里,而不是默认操作中,我们触发一个块,打印当前行号 ( NR
) 以及文件中的原始文本行 ( $0
)。
答案2
grep -n "null-(blank)" file.txt
将输出出现“null-(空白)”的每一行(带有行号)
要仅检查货币列,您可以使用以下正则表达式模式:
grep -n "[^,]*,[^,]*,[ ]*null-(blank)" file.txt