查找具有空值的记录,并使用Unix2显示列名
我有以下输入文件,需要找到哪个字段为null,并显示键列和null值列名称 注意:将来可能会添加新字段 Input.txt查找具有空值的记录,并使用Unix2显示列名,unix,awk,Unix,Awk,我有以下输入文件,需要找到哪个字段为null,并显示键列和null值列名称 注意:将来可能会添加新字段 Input.txt Keyfeild1|Over|Loan|cc|backup 200|12||0| 100||15|1|200 100|100|100|100|100 50||50||11 ExpectedOutput.txt: 200|Loan 200|backup 100|Over 50|Over 50|cc 使用的命令: {cat Input.txt | awk -F"|" '{f
Keyfeild1|Over|Loan|cc|backup
200|12||0|
100||15|1|200
100|100|100|100|100
50||50||11
ExpectedOutput.txt:
200|Loan
200|backup
100|Over
50|Over
50|cc
使用的命令:
{cat Input.txt | awk -F"|" '{for(i=1;i<=NF;i++) if($i=="") { print $1"|"i} }'}
下面的
awk
可能会对您有所帮助
awk -F"|" 'FNR==1{for(i=1;i<=NF;i++){a[i]=$i};next} {for(i=2;i<=NF;i++){if($i==""){print $1,a[i]}}}' OFS="|" Input_file
Awk
解决方案:
awk 'BEGIN{ FS=OFS="|" }
NR==1{ split($0, a); next }
{ for(i=2; i<=NF; i++) if ($i=="") print $1,a[i] }' file
无需将
cat
与awk
一起使用,awk
能够自己读取输入文件。另外,请对您的帖子/评论中显示的样本使用代码标签。请不要发布两次相同的问题。for(i=1;i
awk -F"|" '
FNR==1{
for(i=1;i<=NF;i++){
a[i]=$i};
next
}
{
for(i=2;i<=NF;i++){
if($i==""){
print $1,a[i]}}
}
' OFS="|" Input_file
200|Loan
200|backup
100|Over
50|Over
50|cc
awk 'BEGIN{ FS=OFS="|" }
NR==1{ split($0, a); next }
{ for(i=2; i<=NF; i++) if ($i=="") print $1,a[i] }' file
200|Loan
200|backup
100|Over
50|Over
50|cc