Linux
如何刪除文件中標記的文本塊?
如何使用 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{} 是另一種編寫正則表達式匹配的方法,因此我們不必瘋狂地反斜杠所有正斜杠。