我想使用shell脚本删除整个标记,如果它包含一个特定的字符串内的标记。示例:如果XXX包含在标记中,则删除整个标记
我用下面的命令完成了它。第一个月但如果XXX前后包含“<”,则无效。
有人能告诉我如何删除上述情况中的中间标签吗?谢谢你的合作。
mu0hgdu01#
使之前/之后部分具有任意长度(包括零):
sed -i 's/<script[^>]*>[^<]*XXX[^<]*<\/script>//g' test.txt
字符串
kt06eoxx2#
使用GNU awk中显示的示例,您可以尝试以下解决方案。
awk
awk ' match($0,/(^.*)\<script [^>]*>[^X]*XXX[^/]*(\/.*)$/,arr){ print arr[1] arr[2] } ' Input_file
字符串如果你对上面的输出很满意,那么将> temp && mv temp Input_file附加到解决方案中以进行就地保存。
> temp && mv temp Input_file
2条答案
按热度按时间mu0hgdu01#
使之前/之后部分具有任意长度(包括零):
字符串
kt06eoxx2#
使用GNU
awk
中显示的示例,您可以尝试以下解决方案。字符串
如果你对上面的输出很满意,那么将
> temp && mv temp Input_file
附加到解决方案中以进行就地保存。