有一个文件 test1.txt 和一个文件 test2.txt,它们都由带有随机字符的字符串组成。但有些行在 test1.txt 和 test2.txt 中是相同的
例子:
$ cat test1.txt
случайные_символы1
случайные_символы2
случайные_символы3
случайные_символы4
!@#%^%&^*^
8246****
$ cat test2.txt
случайные_символы1
!@#%^%&^*^
8246****
случайные_символы20
我想得到带有结果的 test1.txt 文件:
случайные_символы2
случайные_символы3
случайные_символы4
找到了这样的解决方案:
sed -i -f <(sed 's,^,/^,;s,$,/d,' test2.txt) test1.txt
给出错误消息:
sed: file /dev/fd/63 line 3: Invalid preceding regular expression
据我了解,它在第 8246 行发誓 ****
如何使处理任何字符串成为可能,无论其中包含什么字符?或者也许有另一种解决方案?
解决方案:文件小于 1GB,'Enikeyshchik' 的答案效果很好
因为我的文件要大得多 - 这出现了:
comm -2 -3 test1.txt test2.txt
您可以将这两个文件读入列表(例如,通过 readlines()),从列表中创建集合,然后从第一个中减去第二个:
非常大文件的选项:
我们完整读取第二个文件,然后逐行读取第一个文件并检查第二个文件中是否存在一行。