查找具有空值的记录,并使用Unix2显示列名

查找具有空值的记录,并使用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

我有以下输入文件,需要找到哪个字段为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"|" '{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