使用 awk 以模式读取文件
我有一个以下方式的输入文件
<td> Name1 </td>
<td> <span class="test"><a href="url1">Link </a></span></td>
<td> Name2 </td>
<td> <span class="test"><a href="url2">Link </a></span></td>
我想要一个 awk 脚本来读取该文件并以以下方式输出
url1 Name1
url2 Name2
任何人都可以帮我解决这个看似琐碎的问题吗?谢谢。
I have an input file in following manner
<td> Name1 </td>
<td> <span class="test"><a href="url1">Link </a></span></td>
<td> Name2 </td>
<td> <span class="test"><a href="url2">Link </a></span></td>
I want a awk script to read this file and output in following manner
url1 Name1
url2 Name2
Can anyone help me out in this trivial looking problem? Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
为每个提取一个 href 相对简单,只要它们符合 XHTML 标准,并且一行中最多只有一个,并且您不关心封闭标签,但 perl 更容易:如果您关心封闭标签或者它们不符合标准,则无法使用正则表达式来解析 HTML。这是不可能的。
补充:哎呀,你确实关心上下文,忘记正则表达式并使用真正的 HTML 解析器
Extracting one href per is relatively simple, so long as they conform to XHTML standards and there is only at most one on a line and you don't care about enclosing tags, but perl is easier:If you care about enclosing tags or they are not standard conformant, you cannot use regular expressions to parse HTML. It is impossible.
added: oops, you do care about context, forget about regexps and use a real HTML parser
这是一个可以完成这项工作的 awk 脚本
Here is an awk script that does the job
这可能有效:
this might work:
awk 'BEGIN{RS=">\n"; FS="> |
每2行作为一条记录。
awk 'BEGIN{RS="></td>\n"; FS="> | </|\""}{print $7, $2}' infile
every 2 lines as a record.