Grep 命令不准确或错误?Windows WSL

Grep 命令不准确或错误?Windows WSL

我在 Windows WSL 中使用 grep 命令,但它似乎不准确。

该命令是从文件2中删除文件1中匹配的行,并在文件3(文本文件)中输出这些行

grep -v -f file2.txt file1.txt >> file3.txt

但是,输出结果加起来并不等于总行数,例如,file2 可能有 100 行,file1 可能有 50 行,而输出 file3 可能有 30 行。

但我的规模更大。文件 2 有 430,000 行,文件 1 有 30,000 行,但输出有 370,000 行。另外要知道,文件 1 中的每一行都与文件 2 中的匹配项随机混在一起,所以我必须使用 grep 来删除它们。此外,文件 1 和文件 2 中都没有重复的行。

答案1

>>表示“附加到文件”,而>表示“覆盖文件”
,但作为示例,我生成了 2 个随机 UUID 的文件,文件 2 有 100 个唯一行,文件 1 有 50 个唯一行,再加上文件 2 中的所有行,以完全随机的顺序进行打乱

$ wc -l file2.txt file1.txt
 100 file2.txt
 150 file1.txt

然后我执行你的命令

$ grep -v -f file2.txt file1.txt >> file3.txt
$ wc -l file3.txt
 50 file3.txt

正如预期的那样,但现在看看如果我再次运行它会发生什么:

$ grep -v -f file2.txt file1.txt >> file3.txt
$ wc -l file3.txt
 100 file3.txt

你所有的问题似乎都是因为你误解了 linux shell 重定向操作数

相关内容