需要准确输出两个文件之间的差异。数据位于以逗号分隔的行中,并且有很多行,例如我只向您展示了一行。每个字符串应该查找其他文件中的每个字符串。
例子:
文件1.txt
abc,def,ghi,klm,nop
one,two,three,four,five,six
文件2.txt
abc,def,ghi,klm,nop
one,two,three,test,four,five,six
预期输出:
test
答案1
差异.py:
import difflib, sys
with open(sys.argv[1], 'r') as f1, open(sys.argv[2], 'r') as f2:
differ = difflib.Differ()
for l in differ.compare(f1.read().split(','), f2.read().split(',')):
if (l.startswith('+ ') or l.startswith('- ')):
sys.stdout.write(l[2:] + '\n')
用法:
python differ.py file1.txt file2.txt
输出:
test
difflib.Differ
- 用于比较文本行序列并产生人类可读的差异或增量的类
答案2
一直以来经典的 gnu awk 方法:
awk -v RS=",|\n" 'NR==FNR{seen[$0]++;next}!seen[$0]' file1 file2
test
这是有效的,因为我们还使用逗号作为 awk 行/记录分隔符 (RS),因此我们为每个文件得到如下输出:
awk -v RS=",|\n" '{print $0}' file1
abc
def
ghi
klm
nop
one
two
three
four
five
six