回答
對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. 使用命令行從文本文件中刪除行
- 3. Linux命令行從文本
- 4. 如何使用PHP從文本文件中刪除一些行?
- 5. 使用linux命令行刪除文本語料庫中的停用詞
- 6. 如何使用linux命令刪除大文件(> 5G)的某些行
- 7. 如何使用linux命令行刪除文件夾
- 8. 從find(shell)命令中刪除一些輸出行
- 9. 如何使用命令行從文件中刪除行?
- 10. 如何通過命令行從文本文件中刪除一段文本?
- 11. 使用awk從文件中刪除列或從Linux上的命令行刪除列
- 12. 編程刪除Linux命令行
- 13. 重命名文本框刪除某些行後刪除行
- 14. 從命令行執行python腳本,Linux
- 15. 如何使用ftp命令從本地機器刪除文件?
- 16. 用於刪除文本的Shell命令
- 17. 如何使用Linux命令(sed?)刪除文件中的特定行?
- 18. 從命令行中刪除SCCM集合
- 19. 命令從數據幀中刪除行
- 20. 從文本文件中刪除一行?
- 21. 從文本文件中刪除一行
- 22. 如何使用Javascript/jQuery從url中刪除一些文本
- 23. 使用jQuery從「src」屬性中刪除一些文本
- 24. 使用linux腳本命令
- 25. 如何從使用命令行,在linux
- 26. 從命令行使用Python2.7(Linux)
- 27. 使用shell命令從php.ini中的行中刪除分號
- 28. 命令行方式從文本文件中刪除單行段落
- 29. 如何通過命令或腳本從多個文件中刪除第一行
- 30. 從Linux中的多個文件中刪除文本行
當然,'grep -v',如此優雅的答案。應該有這個想法! – ShellFish
我用'grep -v'實現了它。這很好。謝謝。 –