bash 命令获取特定 class 值下的 href 值
bash command to get href value down a specific class value
我是 shell 脚本的新手,所以我需要一些帮助。通过 shell 脚本,我需要从 class.
过滤的 html 中获取 href 属性 的值
例如:
<a class="other class" href="value I don't need"></a>
<a class="some class" href="url I need"></a>
在这种情况下,我需要获得 class "some class" 的标签的 href 值。
我需要将值放入变量中,需要使用 sed 或 grep,我对正则表达式一点都不擅长,所以我需要你的帮助。
这是一种方法:
awk -F'href="' '/class="some class/ {split(,a,"\"");print a[1]}' file
url I need
使用 sed
和 grep
的替代方法。
var=`grep 'class="some class"' <file> | sed -r 's/^.+href="([^"]+)".+$//'`
首先 grep 找到正确的行,然后 sed 只用括号中的位(即 href 的值)替换整行。
编辑:如果一行中有多个 <a>
标签,它会变得有点棘手。如果你能假设标签的格式总是像例子那样,那么你可以试试这个:
var=`grep 'class="some class"' <file> | sed -r 's/^.+class="some class"\s+href="([^"]+)".+$//'`
如果你不能假设(也许有时 href 出现在 class 之前)那么你最好使用 html 解析器 - 正则表达式不能真正解析 html 正确。
使用grep 'some class'|sed -n 's/.*href="\(.*\)".*//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="\(.*\)".*//p'
url I need
我是 shell 脚本的新手,所以我需要一些帮助。通过 shell 脚本,我需要从 class.
过滤的 html 中获取 href 属性 的值例如:
<a class="other class" href="value I don't need"></a>
<a class="some class" href="url I need"></a>
在这种情况下,我需要获得 class "some class" 的标签的 href 值。 我需要将值放入变量中,需要使用 sed 或 grep,我对正则表达式一点都不擅长,所以我需要你的帮助。
这是一种方法:
awk -F'href="' '/class="some class/ {split(,a,"\"");print a[1]}' file
url I need
使用 sed
和 grep
的替代方法。
var=`grep 'class="some class"' <file> | sed -r 's/^.+href="([^"]+)".+$//'`
首先 grep 找到正确的行,然后 sed 只用括号中的位(即 href 的值)替换整行。
编辑:如果一行中有多个 <a>
标签,它会变得有点棘手。如果你能假设标签的格式总是像例子那样,那么你可以试试这个:
var=`grep 'class="some class"' <file> | sed -r 's/^.+class="some class"\s+href="([^"]+)".+$//'`
如果你不能假设(也许有时 href 出现在 class 之前)那么你最好使用 html 解析器 - 正则表达式不能真正解析 html 正确。
使用grep 'some class'|sed -n 's/.*href="\(.*\)".*//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="\(.*\)".*//p'
url I need