我有file1
和file2
个文件,其中file2
是file1
的子集。这意味着,如果我迭代file1
,file2
中有一些行,有些行不是,但file2
中没有行不在file1
file1
。文件中可能有多行具有相同的内容。现在我希望得到它们之间的差异,即file2
中comm
以外的所有行。
diff(1)不是答案,comm(1)是。
(无论出于何种原因)
但据我了解,对于file1
,需要先对文件进行排序。问题:两个文件都是有序的(未排序!),需要保留此顺序。所以我真正想要的是迭代file2
,并检查每一行,如果它也在file3
。如果没有,请将其写入SELECT *
FROM table_name
WHERE `date_time`
BETWEEN DATE_ADD(NOW(), INTERVAL -30 MINUTE) AND NOW();
。如果同一内容出现不止一次,则应保留多次!
有没有办法用命令行执行此操作?
答案 0 :(得分:3)
尝试使用GNU grep:
grep -vFf file2 file1 > file3
<强>更新强>:
grep -vxFf file2 file1 > file3
答案 1 :(得分:0)
我认为你不想排除避免临时文件。这可以通过流程替换来实现:
diff <(sort file1) <(sort file2)
# or
comm <(sort file1) <(sort file2)
编辑:使用https://stackoverflow.com/a/4544925/3220113我找到了另一种选择(对于短行的文本文件):
diff -a --suppress-common-lines -y file2 file1 | sed 's/\s*>.//'