我应该使用什么命令从以下 html 代码中提取文本,该代码位于包含以下内容的“test.html”文件中:“<span id="imAnID">extractme</span>
”?
该文件会更大,因此我需要将 grep 或 sed 指向一个 ID,然后告诉它仅从具有该 ID 的标签中提取文本。 假设我从文件所在的目录运行终端,我正在这样做:
cat test.html | sed -n 's/.*<span id="imAnID">\(.*\)<\/span>.*/\1/p'
我做错了什么?我得到一个空的输出... 如果更容易的话,不反对使用 grep 来实现此目的。
最佳答案
您可以尝试使用 awk
来代替:
#!/bin/bash
start_tag="span id=\"imAnID\""
end_tag="/span"
awk -F'[<>]' -v taga="$start_tag" -v tagb="$end_tag" '{ i=1; while (i<=NF) { if ($(i)==taga && $(i+2)==tagb) { print $(i+1) }; i++} }'
使用方式:
$ ./script < infile > outfile
关于sed - 使用 sed 或 grep 从具有特定 id 的 html 标签之间提取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13145762/