用于创建 CSV 文件的 Grep 链接和链接名称



我正在尝试从文件中创建网址和名称列表。链接显示如下:

<table class="list">
  <tr><th valign="top">I</th><td><a href="main.asp">link45.php</a>, <a href="link.html">link</a>, <a href="link8.asp">link8</a>, <a href="link2.html">link 2</a></td></tr>
<tr><th valign="top">I</th><td><a href="main.asp">link45.php</a>, <a href="link.html">link</a>, <a href="link8.asp">link8</a>, <a href="link2.html">link 2</a></td></tr>
</table>

(可能还有一些 tr 和表标签,请忽略标签开头的空格。

我需要输出采用类似 csv 的格式,但我不确定如何使用 grep 执行此操作:

"linktoblah.html"、"link名称"

我有一个工作的 grep,它可以拉出所有链接.html但不确定如何拉出它旁边的名称。

cat list.html | grep -o '<a .*href=.*>' | sed -e 's/<a /n<a /g' | sed -e 's/<a .*href=['"'"'"]//' -e 's/["'"'"'].*$//' -e '/^$/ d'

谢谢

您显示的行可以通过以下方式提取

sed -e 's/.*=(".*")>(.*)<.*$/1, "2"/'

例:

echo '< a href="linktoblah.html">name of link < /a>.' | sed -a 's/.*=(".*")>(.*)<.*$/1, "2"/'

生产

"linktoblah.html", "name of link "

根据文件中的其他内容,您可以将 grep 命令替换为 sed 中的选择器,如下所示:

sed -n -e '/href=/ s/.*=(".*")>(.*)<.*$/1, "2"/p'

其中

/href=/

可以是仅与所需行匹配的任何正则表达式。字符串末尾的p表示"并打印",-n标志表示"除非有匹配项,否则不要做任何事情"。两者的结合使得单独的grep变得没有必要。

我在使用PERL HTML::TableExtract的不同帖子中找到了一种方法。

获取目录中每个文件中表标记之间的内容输出到一个文件

非常感谢乔洛巴的投入。

一个新的awk
不确定这是否是您正在寻找的,但这是我从新数据中得到的:

awk -F"["<>]" -v RS="href="" 'NR>1 {print  """$1"",""$3"""}' file
"main.asp","link45.php"
"link.html","link"
"link8.asp","link8"
"link2.html","link 2"
"main.asp","link45.php"
"link.html","link"
"link8.asp","link8"
"link2.html","link 2"

相关内容

  • 没有找到相关文章

最新更新