我是shell脚本的新手,所以我需要一些帮助。通过shell脚本,我需要从类过滤的html中获取href属性的值。
例如:
<a class="other class" href="value I don't need"></a>
<a class="some class" href="url I need"></a>
在这种情况下,我需要一个标签的href值,使得类“某些类”。 我需要将值放入变量中,需要使用sed o grep,我对reggex不好,所以我需要你的帮助plz。
答案 0 :(得分:0)
这是一种方式:
awk -F'href="' '/class="some class/ {split($2,a,"\"");print a[1]}' file
url I need
答案 1 :(得分:0)
使用sed
和grep
的另一种方式。
var=`grep 'class="some class"' <file> | sed -r 's/^.+href="([^"]+)".+$/\1/'`
第一个grep找到正确的行,然后sed用仅包含bractted的位(这是href的值)替换整行。
编辑:如果你在一行上有多个<a>
标签,那就会有点棘手。如果你可以假设标签的格式总是像例子一样,那么你可以试试这个:
var=`grep 'class="some class"' <file> | sed -r 's/^.+class="some class"\s+href="([^"]+)".+$/\1/'`
如果你不能假设(也许有时href来自课程之前)那么你最好使用html解析器 - 正则表达式无法正确解析html。
答案 2 :(得分:0)
使用grep 'some class'|sed -n 's/.*href="\(.*\)".*/\1/p'
$ cat aaa
<a class="other class" href="value I don't need"></a>
<a class="some class" href="url I need"></a>
$ cat aaa|grep 'some class'|sed -n 's/.*href="\(.*\)".*/\1/p'
url I need