如何在shell脚本中编写排除特定字符串

yzxexxkh  于 2023-08-07  发布在  Shell
关注(0)|答案(2)|浏览(136)

我想使用shell脚本删除整个标记,如果它包含一个特定的字符串内的标记。
示例:如果XXX包含在标记中,则删除整个标记

  • 删除前bbccceeeXXXfffhhhiii
  • 删除后bbbcchhiii

我用下面的命令完成了它。
第一个月
但如果XXX前后包含“<”,则无效。

  • 不可删除的bbbccee<eXXXf<ffhhhiii

有人能告诉我如何删除上述情况中的中间标签吗?
谢谢你的合作。

mu0hgdu0

mu0hgdu01#

使之前/之后部分具有任意长度(包括零):

sed -i 's/<script[^>]*>[^<]*XXX[^<]*<\/script>//g' test.txt

字符串

kt06eoxx

kt06eoxx2#

使用GNU awk中显示的示例,您可以尝试以下解决方案。

awk '
match($0,/(^.*)\<script [^>]*>[^X]*XXX[^/]*(\/.*)$/,arr){
  print arr[1] arr[2]
}
'  Input_file

字符串
如果你对上面的输出很满意,那么将> temp && mv temp Input_file附加到解决方案中以进行就地保存。

相关问题