Grep
grep -v 不返回 grep 的補碼
我想過濾以空格開頭的行的文件。我使用以下命令:
grep -v "^ " < input > input_no_starting_space
為了仔細檢查我的結果,我執行以下命令:
grep "^ " < input > double_check
然後數一下 in 的行數,
input_no_starting_space
看看double_check
它們的總和是否等於 in 的行數input
。為此,我使用wc -l
.由於某種原因,此檢查失敗。意思是,行數的總和小於 中的行數
input
。我的文件有數百萬行,但我似乎無法在一個小例子中重現該問題。我使用 grep 的方式是否有任何問題(因為我希望這樣grep
並且grep -v
總是互相補充),或者這更有可能是我文件中的工件?如果是後者,這個神器會是什麼?這是在 Ubuntu 20.04.3 上使用 GNU grep 3.4。
可能是,您
input_file
不只包含文本數據。嘗試使用
grep
with-a
選項。另請參閱有關數據編碼和 NULL 值的命令
--binary-files=TYPE
選項和第一段:grep``man grep
如果文件的數據或元數據表明該文件包含二進制數據,則假定該文件的類型為 TYPE。非文本字節表示二進制數據;這些要麼是針對目前語言環境編碼不正確的輸出字節,要麼是未給出 -z 選項時的空輸入字節。