回答
對grep
的-v
選項反轉搜索,僅報告與模式不匹配的行。
既然您知道如何使用grep
找到要刪除的行,使用grep -v
和相同的模式會給你所有的行要保留。您可以將其寫入臨時文件,然後將臨時文件複製或移動到原始文件上。
grep -v pattern original.file > tmp.file
mv tmp.file original.file
有對grep
解決多種可能的改進,但對於大多數人大部分時間,顯示什麼或多或少充足(這將是使用每個進程中間文件名是個好主意,最好用隨機名稱,如mktemp
命令給你)。您可以添加代碼來刪除中斷中的中間文件;在回移時抑制中斷;如果原始文件具有多個硬鏈接或符號鏈接,則使用複製和移除而不是移動;等等。sed
命令或多或少地爲您解決這些問題,但它不能識別多個硬鏈接或符號鏈接。
創建與使用grep的行匹配的模式。然後如下創建一個sed腳本:
sed -i '/pattern/d' file
說明:
- 的
-i
選項意味着覆蓋輸入文件,從而去除匹配pattern
的文件。 pattern
是您爲grep
創建的模式,例如,^a*b\+
。d
該sed命令代表刪除,它將刪除與該模式匹配的行。file
這是輸入文件,它可以由相對路徑或絕對路徑組成。
欲瞭解更多信息,請參閱man sed
。
請注意,即使使用GNU'sed',sed'也不會將'+'識別爲正則表達式元字符。樣本模式匹配'b +','aab +',但不匹配'aaabc'。添加'-r'選項來啓用擴展正則表達式。 –
當然,我很sl。。我剛剛從頭頂上給了一些隨機圖案。感謝您指出,雖然! – ShellFish
- 1. sed命令刪除一些文本
- 2. 如何使用linux命令刪除大文件(> 5G)的某些行
- 3. 如何使用linux命令行刪除文件夾
- 4. 從find(shell)命令中刪除一些輸出行
- 5. 如何通過命令行從文本文件中刪除一段文本?
- 6. 使用awk從文件中刪除列或從Linux上的命令行刪除列
- 7. 從命令行執行python腳本,Linux
- 8. 如何使用ftp命令從本地機器刪除文件?
- 9. 用於刪除文本的Shell命令
- 10. 如何使用Linux命令(sed?)刪除文件中的特定行?
- 11. 從文本文件中刪除一行?
- 12. 如何使用Javascript/jQuery從url中刪除一些文本
- 13. 使用jQuery從「src」屬性中刪除一些文本
- 14. 從命令行使用Python2.7(Linux)
- 15. 如何從使用命令行,在linux
- 16. 命令行方式從文本文件中刪除單行段落
- 17. 如何通過命令或腳本從多個文件中刪除第一行
- 18. 從Linux中的多個文件中刪除文本行
- 19. 使用單行命令刪除目錄
- 20. 使用alter session從Linux命令行運行的Oracle SQL腳本
- 21. 從python腳本執行linux shell命令
- 22. 從php腳本執行linux命令
- 23. 使用終端從文檔中刪除一行文本
- 24. 使用xlst從文本文件中刪除第一行
- 25. 從Symfony命令運行Linux命令
- 26. 命令行:從批處理文件中的回顯數據中刪除文本
- 27. 這一發現Linux命令不能刪除文件
- 28. 從主目錄中刪除git(使用終端/命令行)
- 29. 使用Windows命令行連接文本文件,刪除前導行
- 30. 如何從命令行中的jar中的清單文件中刪除一行?
當然,'grep -v',如此優雅的答案。應該有這個想法! – ShellFish
我用'grep -v'實現了它。這很好。謝謝。 –