我获得了 100 多个以下格式的 HTML 文件:
<HTML> <HEAD> <TITLE> ABC LTD 统计数据 - 2007 年1 月- Rang IDXYZZAZZZZ </TITLE> </HEAD> <BODY BGCOLOR = "#E8E8E8" TEXT = "#000000" LINK = "#0000FF" VLINK = "#FF0000" > <H2> ABC LTF 统计数据</H2> < 小><STRONG> 汇总期间:2007 年1 月< BR> 生成于2007 年2 月1 日06 : 40 CET <BR> </STRONG></SMALL> <CENTER> <HR> <P> <FONT SIZE = "-1" ></CENTER><PRE> 我的数据1 我的数据2 我的数据3 我的数据10000 我的数据N次 </PRE></FONT> </CENTER> <P> <HR> <表格 宽度= "100%" CELLPADDING= 0 CELLSPACING= 0 BORDER= 0 > <TR> <TD ALIGN=左 VALIGN=顶部> <小>由 MyAppDbStatsWriter (UNIX) 版本1.9 b2生成</A> </SMALL> </TD> </TR> </TABLE> </BODY> </HTML>
如何使用 grep 命令在 unix 或 linux 中提取两个单词 (<PRE>和) 之间的文本?</PRE>
让我们看看如何使用grep 命令或egrep 命令来提取两个单词或字符串之间的数据。我还建议探索 sed/awk/perl 命令来提取 Linux 或 Unix 机器上两个单词之间的文本。
教程详情 | |
---|---|
难度级别 | 简单的 |
根权限 | 不 |
要求 | Linux 或 Unix 终端 |
类别 | Linux shell 脚本 |
先决条件 | grep、sed 和 awk |
操作系统兼容性 | BSD • Linux • macOS • Unix |
美东时间。阅读时间 | 3分钟 |
在 Unix / Linux 中查找两个单词之间的文本
sed 命令的语法如下:
sed -n "/START-WORD-HERE/,/END-WORD-HERE/p"输入 sed -n "/START-WORD-HERE/,/END-WORD-HERE/p"输入>输出
<PRE>在此示例中,使用</PRE>sed 命令提取两者之间的文本数据:
sed -n "/<PRE>/,/</PRE>/p" input.html sed -n "/<PRE>/,/</PRE>/p" input.html >输出.html
如何使用 grep 提取两个单词之间的文本
假设您仍然需要使用grep 命令或egrep 命令,然后使用以下语法来提取之间的数据:
# 对于单行输入: grep -o -P '(?<=START_HERE_WORD).*(?=END_HERE_WORD)' input > output grep -o -P '(?<=<PRE>).*(?=< /PRE>)'输入>输出 # 对于多行输入,请使用以下语法: grep -z -o -P '(?<=START_HERE_WORD)(?s).*(?=END_HERE_WORD)'输入>输出 grep -z -o -P '(?<=<PRE>)(?s).*(?=</PRE>)'输入>输出
您可能需要根据您的输入数据在语法方面进行一些调整。
如何使用awk提取两个单词之间的文本
awk 的语法也很简单:
awk '/START_WORD_1/,/END_WORD_1/' /到/文件的 路径/ awk '/<PRE>/,/</PRE>/' /到/文件的 路径/ awk '/<PRE>/, / </ PRE>/' / path / to / file >输出。文件
以下是各种命令的外观:
加起来
您学习了各种 Linux 和 Unix 命令来提取两个单词之间的数据。有关详细信息,请使用 man 命令或 help 命令参阅以下手册页:
$ man sed
$ man awk
$ man grep