input文件(testing):
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( multiline )中打印正则expression式组?
如果你像这样使用sed:
sed -e '/<a/{:begin;/<\/a>/!{N;b begin};s/<a\([^<]*\)<\/a>/\n/;/<a/b begin}'
那么它将打印在不同的行:
123456 789 0123
但是,这是你想要打印? 或者你想在hrefs中打印文本?
<a
href=""> </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