我有2个文件:
File1 ---------------------------------------> File2
abc -----------------------------------------> ABC
cde -----------------------------------------> CDE,XYZ,EFG,HIJ,...,N
efg -----------------------------------------> LMN,OPQ,WEQ,... N
现在我想要File1 line1 - > File2 line1,line 2 - >第2行等等...... 但是,在file2中,一行可以有多个以“逗号”分隔的条目。
现在,如果file1中的条目与文件2中的任何相应行条目匹配 - >结果好 否则显示差异......
例如:
FILE1 ---------------------- FILE2
cde ---------------------- cde,xyz,efg,hij,opt
结果应该没问题,因为两个文件中都存在cde。
你能帮我写一个shell脚本吗? sdiff给了我条目差异
答案 0 :(得分:0)
考虑这两个测试文件:
$ cat file1
abc
cde
efg
$ cat file2
abc
cde,xyz,efg,hij,n
lmn,opq,weq,n
考虑命令:
$ awk -F, 'FNR==NR{a[NR]=$1;next} {f=0;for (i=1;i<=NF;i++)if($i==a[FNR])f=1;if(f)print "OK";else print a[FNR]" -----> " $0}' file1 file2
OK
OK
efg -----> lmn,opq,weq,n
这会在OK
的相应行的任何位置找到file1
中的键的每一行打印file2
。如果不是,它会打印两行,如图所示。
从评论中,考虑这两个文件,其中所有行都匹配:
$ cat f1
abc
cde
mno
$ cat f2
abc
efg,cde,hkl
mno
$ awk -F, 'FNR==NR{a[NR]=$1;next} {f=0;for (i=1;i<=NF;i++)if($i==a[FNR])f=1;if(f)print "OK";else print a[FNR]" -----> " $0}' f1 f2
OK
OK
OK