繁体   English   中英

如何使用awk和bash检查文本文件中的字段为空还是null

[英]How do I check if a field is empty or null in a text file using awk and bash

我有两个文本文件,我想根据它们的行和列比较它们的对应值。 文本文件中的每个值(字段)都用制表符分隔。

这些是文件:

FILE1.TXT

Name  Col1  Col2  Col3  
-----------------------
row1  1     4     7        
row2  2     5     8         
row3  3     6     9 

FILE2.TXT

Name  Col1  Col2  Col3  
-----------------------
row2  1     4     11        
row1  2     5     12
row3  3          9 

这是我到目前为止的代码:

awk '
FNR < 2 {next}                       
FNR == NR {           
    for (i = 2; i <= NF; i++) {
        a[i,$1] = $i;      
    }              
    next;       
}

# only compare if a row in file2 exists in file1
($1 in b) {                                          
    for (i = 2; i <= NF; i++) 
    {
        if (a[i,$1] == $i) 
        {
             print "EQUAL"       
        }
        else if ( //condition that checks if value is null// )
        {
             print "NULL" 
        }
        else
        {
             print "NOT EQUAL"
        }
    }
}' file1.txt file2.txt

我在检查file2.txt是否存在空值( file2.txt row3col2 )时file2.txt 我什至没有得到该空值的输出。 到目前为止,我尝试了if ($i == "") ,但它仍然没有给我任何输出。 有什么建议么? 谢谢。 (我在bash脚本中使用gnu awk)

让我知道是否需要进一步说明。

只需将FS设置为tab:

awk -F'\t' '....'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM