我知道s/&/\&/g
替换了所有被转义的&符号,并用&符替换它们。我想要更挑剔。我想只更换那些逃脱的&符号,如果他们在href中。我无法弄清楚。
我正在尝试以下但是它没有工作:
echo "<a href="http://example.com?q=man&string=1&bat=2">Link</a>" | sed -E 's/^href="(.*)&/\1&/g'
它没有用。我还看到另一个问题,它只会做第一个转义的&符号而不是全部。任何人都知道解决方案可能是什么?
答案 0 :(得分:0)
不确定如何使用sed
,但这里是Ruby:
echo '<a href="http://example.com?q=man&string=1&bat=2">Link</a>' | ruby -pe '$_.gsub!(/href="([^"]*)"/) { |h| h.gsub("&", "&") }'
但是,我完全支持@ muistooshort的评论:除非你做了一些奇怪的事情,否则你应该想要&
。
答案 1 :(得分:0)
perl -e '$url=$ARGV[0]; while ( $url =~ s/(<a href="[^"]+?)&/$1&/ ){};print "$url\n"' '<a href="http://example.com?q=man&string=1&bat=2">Link</a>'
轻松修改以运行文件