GREP-文件中的模式匹配仅返回列表中的最后一个模式

史蒂夫·B

我在一个文本文件中列出了大约2300万个哈希,每行一个哈希。称之为hashes.txt我在另一个文本文件中有一个讨厌的哈希值列表(应用程序40),每行又一个哈希值。称之为culls.txt

我正在尝试使用culls.txt中的模式进行反向grep,也就是说我要输出与cull列表中的任何模式都不匹配的任何行。

grep -v -F -f culls.txt hashes.txt > Output.txt

发生的情况是,只有40个左右的列表中的最后一个哈希被删除。前几行中的所有哈希都保留下来。我受阻了。有什么建议吗?而且,是的,这些值在哈希文件中;->

纽元

只有最后一个哈希被识别的事实可能指向除最后一行以外的所有行的结尾问题。

我已经在我的系统(Ubuntu 14.04; grep(GNU grep)2.16)上使用以下文件对此进行了测试:

$ cat culls.txt 
h00
h10
h20
h30
h40
$ cat culls2.txt 
h00
h10
h20
h30
h40
$ cat hashes.txt 
h04
h11
h13
h30
h61
h40
h41
h39
h42
$ file culls.txt hashes.txt  culls2.txt
culls.txt:  ASCII text
hashes.txt: ASCII text
culls2.txt: ASCII text, with CRLF line terminators

我得到的输出culls.txt与预期的一样(h30h40从输出中删除了):

$ grep -v -F -f culls.txt hashes.txt
h04
h11
h13
h61
h41
h39
h42

我使用的输出culls2.txt与您看到的类似(仅从h40输出中删除;h30仍然存在):

$ grep -v -F -f culls2.txt hashes.txt
h04
h11
h13
h30
h61
h41
h39
h42

的最后一行没有行尾culls2.txt

当我还将CRLF行终止符添加到最后一行时,我得到:

$ grep -v -F -f culls3.txt hashes.txt
h04
h11
h13
h30
h61
h40
h41
h39
h42

现在,没有哈希从输出中删除。

这就证明了CRLF线路终结器是问题所在。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章