SED -从HTML标签中删除属性



我想从HTML标签中删除一个特定的属性(在我的例子中是name),它可能在我的文件

的每行的不同位置示例输入:

<img name="something_random_for_each_tag" src="https://websiteurl.com/286.jpg" alt="img">
预期输出:

<img src="https://websiteurl.com/286.jpg" alt="img">

我代码:

sed 's/name=".*"//g' <<< '<img name="something_random_for_each_tag" src="https://websiteurl.com/286.jpg" alt="img">'

但它只显示<img >,我也失去了src属性

指出:

  1. name属性可以在标签的任何位置(不一定在开头)
  2. 您可以使用sed、awk、Perl或任何您喜欢的东西,它应该在命令行上工作

您的sed表达式匹配到行中最后一个"的文本。一定是

sed 's/ name="[^"]*"//g'

根据您展示的样品,您可以尝试以下操作吗?在GNUawk中编写和测试。

awk '/^<img/ && match($0,/src.*/){print substr($0,1,4),substr($0,RSTART,RLENGTH)}' Input_file

解决方案2:使用awksub(代入函数)

awk '/^<img/{sub(/name="[^"]*" /,"")} 1' Input_file

解释:

解决方案1:使用awk的匹配函数从src到最后一行进行匹配,并打印前4个带有匹配regex值的空格字符

解决方案2:如果行从<img开始检查条件,则替换name=""仍然带有NULL并打印当前行。

相关内容

  • 没有找到相关文章

最新更新