regex - 如何删除多个文件中的文本 block

标签 regex linux unix sed find

我需要从多个文件中删除两个文本 block 。这两个 block 是:

<sales_end_date>None</sales_end_date>
 ... some text
<unavailable_for_vod_date>None</unavailable_for_vod_date>

我该如何正确地做相当于:

find ./ -type f -name 'xml' -exec sed -i 
    '**remove <sales_end_date>None</sales_end_date>' {} \;

最佳答案

我认为您正在寻找:

find . -type f -name '*.xml' -exec sed -i \
    -e '\@^<sales_end_date>None</sales_end_date>@d' \
    -e '\@^<unavailable_for_vod_date>None</unavailable_for_vod_date>@d' {} \;

但我不会称其为正确执行。 sed 的 -i 选项可以说根本不适合使用,并且用 sed 解析 xml 理所当然地被认为是令人厌恶的。但是,这应该可以完成工作。

关于regex - 如何删除多个文件中的文本 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11962127/

相关文章:

linux - 我需要文件 I/O 的解释'我收到了我不明白的警告

python - 是否有另一种方法来关闭标准输入文件描述符(当前使用 <&- with shell=True)?

linux - linux/unix 中的 spawn、expect 和 send 命令是什么

c - 第一行的 '_attribute_((aligned(4)));'是什么意思?

linux - .vimrc 中的语法错误 : unexpected end of file and etc. 问题

unix - 如何使用 Unix CLI 有效地学习工作

javascript - 正则表达式:匹配下划线包裹的单词,除非它们以@/#开头

python - 美元金额,千位以逗号分隔

regex - 柔性/莱克斯 : Lookahead predicate - unrecognized rule

javascript - 正则表达式负向后隐藏在JavaScript中无效