Linux

如何刪除文件中標記的文本塊?

  • February 9, 2013

如何使用 sed、grep 或其他程序刪除文件中所有已標記文本塊的實例?

如果我有一個文件,其中包含:

random

text

// START TEXT

內部

文本

// END TEXT

more

random

// START TEXT

asdf

// END TEXT

文本

如何刪除開始/結束行中的所有文本塊,生成以下內容?

隨機

文本

更多

隨機

文本

sed '\:// START TEXT:,\:// END TEXT:d' file

在 Perl 中執行此操作的正確方法是使用 Perl 的觸發器運算符

perl -ne'print unless m{^// START TEXT}..m{^// END TEXT}'

Perl 中的 x..y 從 x 為真開始計算為真,並在 y 為真時結束。m{} 是另一種編寫正則表達式匹配的方法,因此我們不必瘋狂地反斜杠所有正斜杠。

引用自:https://serverfault.com/questions/137829