我有两个文件test1.txt和test2.txt
test1.txt包含
abc.cde.ccd.eed.12345.5678.txt
abcd.cdde.ccdd.eaed.12346.5688.txt
aabc.cade.cacd.eaed.13345.5078.txt
abzc.cdae.ccda.eaed.29345.1678.txt
abac.cdae.cacd.eead.18145.2678.txt
aabc.cdve.cncd.ened.19945.2345.txt
和test2.txt包含
12345.5678.txt
29345.1678.txt
18145.2678.txt
10111.2222.txt
我想比较这两个文件,并在bash中给我输出这样的东西
同时:
abc.cde.ccd.eed.12345.5678.txt
abzc.cdae.ccda.eaed.29345.1678.txt
abac.cdae.cacd.eead.18145.2678.txt
仅在test1.txt中
abcd.cdde.ccdd.eaed.12346.5688.txt
aabc.cade.cacd.eaed.13345.5078.txt
aabc.cdve.cncd.ened.19945.2345.txt
仅在test2.txt中
10111.2222.txt
4 回答
输出文件:Both.txt,File1.txt,File2.txt
同时:
输出:
仅在test1.txt中:
输出:
仅在test2.txt中:
输出:
这个公式可以使用GNU Coreutils的
comm
来解决:首先排序第二个文件:
然后使用命令来显示行:
Explanation :
以下AWK脚本
script.awk
也可以完成这项工作:它可以如下调用:
请注意,脚本不会对两个文件中的数据结构做任何假设 . 它只是假设
test2.txt
中的行是test1.txt
中行的潜在子串 .