sed - 使用 sed 或 grep 从具有特定 id 的 html 标签之间提取文本

标签 sed grep html-parsing

我应该使用什么命令从以下 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/

相关文章:

vim - 如何使用vim,sed或其他类似工具将大文件(100万行)中的成对连续行连接起来?

sed - 什么是合适的 grep + sed 语法?

php - 通过 DOMDocument 提取表格的特定行

c - 使用 sed 删除 C/C++ 文件中的函数体

linux - 使用 sed 替换最后一次出现

linux - 使用 bash 和 awk 比较两个文件并更新第二个文件并对第二个文件进行排序

regex - 如何使用十六进制表示来查找特殊字符(控制字符)

linux - Bash Grep 和发送

python:获取开始和结束html标签

python - 使用 css 样式从网站抓取数据 使用 Beautifulsoup