在批处理文件中使用sed来获取另外两个字符串之间的字符串

时间:2015-02-10 10:20:03

标签: batch-file sed

我有一个包含此html代码的文件:

 <p class="center-block"><img alt="ourpicture" class="picture" src="http://mypage.com/ourpicture123" /></p>

现在我想获得像http://mypage.com/ourpicture123这样的来源。 我怎么能用sed处理这个问题?如果我能找到&#39; src =&#34;&#39;那就太好了。之前和&#39;&#34;&#39;后。

2 个答案:

答案 0 :(得分:0)

通过sed,

$ sed -n 's/.*\bsrc="\([^"]*\)".*/\1/p' file
http://mypage.com/ourpicture123

通过grep,

grep -oP '\bsrc="\K[^"]*(?=")' file

如果一行包含一行中存在多个src属性,则上述sed命令将不起作用。上面的grep命令中的\K将丢弃先前匹配的src="字符,以便在决赛中打印。

答案 1 :(得分:0)

以下是awk版本:

awk -F'src="' '{split($2,a,"\"");print a[1]}' file
http://mypage.com/ourpicture123

或者像这样:

awk -F'src="' '{sub(/".*$/,"",$2);print $2}' file
http://mypage.com/ourpicture123

如果您有多行,并且只需要src=行:

awk -F'src="' 'NF>1{split($2,a,"\"");print a[1]}' file
http://mypage.com/ourpicture123