输入文件(测试):
123456<a id="id1" name="name1" href="link1">This is link1</a>789<a id="id2"
href="link2">This is link2</a>0123
期望的输出:
link1
link2
我做了什么:
$ sed -e '/<a/{:begin;/<\/a>/!{N;b begin};s/<a\([^<]*\)<\/a>/QQ/;/<a/b begin}' test
123456QQ789QQ0123
问题:如何在sed中打印正则表达式组(多行)?
答案 0 :(得分:2)
如果您使用这样的sed:
sed -e '/<a/{:begin;/<\/a>/!{N;b begin};s/<a\([^<]*\)<\/a>/\n/;/<a/b begin}'
然后它将以不同的行打印:
123456
789
0123
但这是你想要打印的吗?或者你想在hrefs中打印文本?
<a
和</a>
sed -r '$!N; s~\n~~; s~(<a )~\n\1~ig; s~[^<]*<a[^>]*href\s*=\s*"([^"]*)"[^\n]*~\1\n~ig' test
<强>输出强>
link1
link2
regex='href="([^"]*)"'
while read line; do
[[ $line =~ $regex ]] || continue
echo ${BASH_REMATCH[1]}
done < test
<强>输出强>
link1
link2