我有2个文件,比如test
和test1
,输出如下:
test test1
abcd;india abcd
efgh;india
ijkl;us
mnop;us
比较test
和test1
的正确方法是什么,并将测试文件中的区域信息重定向到新文件test2
?
test2 expected output
india
答案 0 :(得分:1)
awk -F';' 'FNR==NR{ a[$1]=$2; next }($1 in a){ print a[$1] }' test test1
保存在输出文件重定向中,如下所示
awk -F';' 'FNR==NR{ a[$1]=$2; next }($1 in a){ print a[$1] }' test test1 > test2
说明:
awk -F';' ' # call awk set field separator as ;
FNR==NR{ # first file "test"
a[$1]=$2; # a is array,
# $1 (col1) is array key
# $2 (col2) is array value
next # stop processing further go to next line
}
($1 in a){ # here we read file "test1"
# if array a has index which is 1st column from test1 file
print a[$1] # print array a value
}' test test1
答案 1 :(得分:0)
您可以使用diff命令来比较test和test1
diff test test1> TEST2
答案 2 :(得分:0)
如果test1
只有一个条目,则可以简化:
$ awk -F\; -v p=$(<test1) '$1==p{print $2}' test
india
说明:
awk
显而易见-F\;
设置字段分隔符-v p=$(<test1)
读取文件test1
中的搜索字词到awk变量p
'$1==p{print $2}'
如果搜索字在第一个字段中,则打印第二个字段test
文件