gpt4 book ai didi

linux - 在 sed 中加入行范围的正则表达式

转载 作者:太空宇宙 更新时间:2023-11-04 09:07:10 25 4
gpt4 key购买 nike

我有以下代码可以找到所有 <p> </ p>在标签内 <TXT_accesp> </TXT_accesp>并删除它们。这段代码做到了,它工作正常:

find /home -type f -name "*.html" -exec \
sed -i '/\<TXT_accesp\>/,/\<\/TXT_accesp\>/s@</\?p>@@g' {} \;

问题是我需要添加更多标签。现在你必须删除所有 <p> </ p><TXT_accesp> </TXT_accesp> 内或在 <TXT_acceng> </TXT_acceng> 内但是我不能加入正则表达式或者,我得到一个错误(该命令不存在,好像做得不好)。

find /home -type f -name "*.html" -exec \
sed -i '/\<TXT_accesp\>/,/\<\/TXT_accesp\>\||\<TXT_acceng\>/,/\<\/TXT_acceng\>/s@</\?p>‌​@@g' {} \;

最佳答案

sed 不支持行范围之间的交替(OR 或 ||)。某些版本支持在正则表达式中进行交替的扩展正则表达式,但您在这里需要的是两个带有 -e 选项(为了便于阅读)的 sed 命令:

find /home -type f -name "*.html" -exec \
sed -i -e '/\<TXT_accesp\>/,/\<\/TXT_accesp\>/s@</\?p>@@g' \
-e '/\<TXT_acceng\>/,/\<\/TXT_acceng\>/s@</\?p>@@g' \
{} \;

您可以将其折叠成一行;你不应该这样做。

关于linux - 在 sed 中加入行范围的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8794354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com