我對grep
命令的輸出有點困惑,它似乎是根據-f FILE
的大小截斷結果。例如,考慮字符串的1000行的文件,patterns.txt
,例如:爲什麼grep根據我的輸入文件大小顯示不同的輸出?
adkgjwofjdjglkadjglkjasdfahdg
dsklfjsldkfjaghwioeghsdlkjfld
sdkljfsdkljghsdlfhkwhfklshdfo
...
sdklfjsdklfjsdklfjslkjghdfkjj
和1Gb的queryfile.txt
搜索我的模式。當我運行
grep -F -o -f patterns.txt queryfile.txt | grep -c adkgjwofjdjglkadjglkjasdfahdg
在這種情況下,該命令報告0匹配的第一線,patterns.txt
(adkgjwofjdjglkadjglkjasdfahdg
),即使有35只出現在queryfile.txt
。我通過將patterns.txt
文件減少到前10行來驗證了這一點。重新運行
grep -F -o -f patterns_reduced-list.txt queryfile.txt | grep -c adkgjwofjdjglkadjglkjasdfahdg
正確報告adkgjwofjdjglkadjglkjasdfahdg
的35次發生。
發生了什麼事?
適用於我(GNU grep 2.16)。 – dreamlax
你在哪個平臺上運行?你使用的是哪個版本的'grep'?你可以減少你的數據到一個MCVE([如何創建一個最小,完整和可驗證的例子?](http://stackoverflow.com/help/mcve)) 如何創建'first_line_of_patterns.txt'文本到傳遞給'grep'?我認爲它是'$(sed 1q patterns.txt)'的一些變體,但是你應該顯示這一步。 –
@dreamlax:模式的每種可能的變化? :) –