命令:
LC_ALL=C fgrep -f /root/inputfile.txt *.txt > outputfile.txt
输入文件包含此类内容;
-name1:
-name2:
-othername:
*.txt
(多个文件)包含诸如
-name:email@email:d-o-b::alias
当我从输入文件中 grep 一个小的名称列表时,有些存在于 中*.txt
,有些则不存在。我得到其他错误结果。
000_na_name_000:493982:[email protected]:2000-01-05:XX:X:123.123:alias
输入中绝对没有任何内容会导致这些错误结果,而且这样的结果有很多。
答案1
从问题中的示例来看,关于fgrep
.
看起来错误的是 grep - 如果outputfile.txt
以前存在 - 可能会再次搜索它自己的输出,具体取决于缓冲区大小和输入大小。如果outputfile.txt
之前不存在,则似乎*.txt
不会匹配它,因为在匹配时它不存在。
它看起来并不像您的问题的原因,但值得测试outputfile.txt
存储在其他地方时会发生什么。
如果不是这样,你能做什么?
在评论中,您展示了inputfile.txt
导致问题的示例。
我认为问题是由该文件中的一行或多行引起的 - 当与相同的*.txt
文件一起使用时。
要找出哪些行有问题,您可以执行以下操作二分查找对于线条:您删除一半的线条,然后尝试它是否有效。如果问题消失,则使用已删除的行继续,否则使用剩余的行。现在,您重复该操作,直到只剩下一行或几行 - 此时您可能已经可以看到原因了。