如何替换/删除多行?

时间:2019-01-14 20:35:31

标签: bash perl unix awk sed

我想在基于debian的系统上使用find . -name *.php -exec COMMAND {} \;删除这样的模式:

<?php
#bVj7Gt#
line1
...
lineX
#/bVj7Gt#
?>

<?php之后的行=哈希+六个字母数字+哈希

?>之前的行=哈希+斜杠+六个字母数字+哈希

1 个答案:

答案 0 :(得分:1)

对于多字符RS,使用GNU awk,这可能是您想要的,也可能不是您想要的(因为您未提供我们可以测试的示例输入/输出):

$ cat file
foo
<?php
#bVj7Gt#
line1
...
lineX
#/bVj7Gt#
?>
bar

$ awk -v RS='<[?]php\n#[[:alnum:]]{6}#.*#/[[:alnum:]]{6}#\n[?]>\n' -v ORS= '1' file
foo
bar

如果要进行“就地”编辑,请使其awk -i inplace -v RS=...