我有两个文件,我需要比较File1中的第二个字段和File2中的第一个字段。 如果存在匹配打印文件2的第二场和从File1中 匹配整行。如果不存在匹配打印“未找到”并从File1中awk比较2个文件,2个字段文件中的不同顺序,打印或合并匹配和非匹配行
整个线File1中
\\FILESERV04\PCO;S:\CA\USII ECOM;/FS7_434D/FILESERV04/BUSII;;;;\\FILESERV04\PCO\;467,390,611 Bytes;11,225 ;157
\\FILESERV12\MINE$;S:\CA\Naka;/FS3_434D/FILESERV12/NAKA;;;;\\FILESERV12\MINE$\;0 Bytes;0 ;0
\\FILESERV12\INTEG$;S:\CA\PLOTA;/FS3_434D/FILESERV12/INTEG;;;;\\FILESERV12\INTEG$\;231,094,432,158 Bytes;175,180 ;21,309
\\FILESERV15\ED$;S:\CA\ED;/FS3_434D/FILESERV12/ED;;;;\\FILESERV15\ED$\;244,594,432,158 Bytes;145,040 ;21,311
文件2
S:\CA\USII ECOM;782
S:\CA\PLOTA;0
S:\CA\Naka;781
所需的输出:
782;\\FILESERV04\PCO;S:\CA\USII ECOM;/FS7_434D/FILESERV04/BUSII;;;;\\FILESERV04\PCO\;467,390,611 Bytes;11,225 ;157
781;\\FILESERV12\MINE$;S:\CA\Naka;/FS3_434D/FILESERV12/NAKA;;;;\\FILESERV12\MINE$\;0 Bytes;0 ;0
0;\\FILESERV12\INTEG$;S:\CA\PLOTA;/FS3_434D/FILESERV12/INTEG;;;;\\FILESERV12\INTEG$\;231,094,432,158 Bytes;175,180 ;21,309
NOT FOUND;\\FILESERV15\ED$;S:\CA\ED;/FS3_434D/FILESERV12/ED;;;;\\FILESERV15\ED$\;244,594,432,158 Bytes;145,040 ;21,311
如果场数来比较是在这两个文件这条线的工作原理相同场数:
awk -F";" 'NR==FNR{a[$1]=$2;next}{if (a[$1])print a[$1]";"$0;else print "Not Found"";" $0;}' File1 File2
但由于在这种情况下,我有不同的场数从两个要比较的文件是不是在这里工作。
感谢
使用GNU awk
可能重复的[AWK比较2个文件,印刷匹配和差分](HTTP:/ /stackoverflow.com/questions/13116353/awk-compare-2-files-print-match-and-difference) – Vijay