如何使用 Unix cmd 在文件中查找空值

如何使用 Unix cmd 在文件中查找空值
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

相关内容