我有一个文本块,看起来像这样:
<!-- BOF CLEAN --> ... a bunch of stuff <!-- EOF CLEAN -->
我想删除整个块。sed命令是什么?
ux6nzvsh1#
$ cat text abc <!-- BOF CLEAN --> ... a bunch of stuff <!-- EOF CLEAN --> def $ sed '/<!-- BOF CLEAN -->/,/<!-- EOF CLEAN -->/d' text abc def
我不能比Sed One-Liners Explained, Part III: Selective Deletion of Certain Lines and Special Applications更好地解释它。
mspsb9vt2#
要删除从<!-- BOF CLEAN -->开始(包括<!-- BOF CLEAN -->)到<!-- EOF CLEAN -->结束(包括<!-- EOF CLEAN -->)的所有文本,请使用以下sed命令:
<!-- BOF CLEAN -->
<!-- EOF CLEAN -->
sed -i '/<!-- BOF CLEAN -->/,/<!-- EOF CLEAN -->/d' file_name;
参考:Delete text or paragraph between two sections using sed
deyfvvtc3#
这些天我使用/s修饰符来做这个。我注意到没有人提到这一点。我使用的标记与是免费的空格太像
/s
{bof-nf} ... a bunch of stuff {eof-nf}
因此,例如,要删除此块,请使用$newcontent = preg_replace("/\{bof-nf\}(.*)\{eof-nf\}\\n/s", "", $newcontent);个要保留块但删除标记,请使用
$newcontent = preg_replace("/\{bof-nf\}(.*)\{eof-nf\}\\n/s", "", $newcontent);
$newcontent = preg_replace("/\{bof-nf\}.*\\n/", "", $newcontent); $newcontent = preg_replace("/\{eof-nf\}.*\\n/", "", $newcontent);
3条答案
按热度按时间ux6nzvsh1#
我不能比Sed One-Liners Explained, Part III: Selective Deletion of Certain Lines and Special Applications更好地解释它。
mspsb9vt2#
要删除从
<!-- BOF CLEAN -->
开始(包括<!-- BOF CLEAN -->
)到<!-- EOF CLEAN -->
结束(包括<!-- EOF CLEAN -->
)的所有文本,请使用以下sed命令:参考:Delete text or paragraph between two sections using sed
deyfvvtc3#
这些天我使用
/s
修饰符来做这个。我注意到没有人提到这一点。我使用的标记与是免费的空格太像因此,例如,要删除此块,请使用
$newcontent = preg_replace("/\{bof-nf\}(.*)\{eof-nf\}\\n/s", "", $newcontent);
个要保留块但删除标记,请使用