我有一个文件 HTML , 它有大约 150 个 anchor 标签。我只需要来自这些标签的链接,AKA,<a href="*http://www.google.com*"></a>
.我只想得到 http://www.google.com部分。
当我运行 grep 时,
cat website.htm | grep -E '<a href=".*">' > links.txt
这会将它在不是我想要的链接上找到的整行返回给我,所以我尝试使用 cut
命令:
cat drawspace.txt | grep -E '<a href=".*">' | cut -d’”’ --output-delimiter=$'\n' > links.txt
除了它是错误的,它不起作用给我一些关于错误参数的错误...所以我假设该文件也应该被传递。也许喜欢 cut -d’”’ --output-delimiter=$'\n' grepedText.txt > links.txt
.
但如果可能的话,我想在一个命令中完成这个...所以我尝试执行 AWK命令。
cat drawspace.txt | grep '<a href=".*">' | awk '{print $2}’
但这也不会运行。它要求我提供更多输入,因为我还没有完成....
我试着写一个批处理文件,它告诉我 FINDSTR 不是内部或外部命令...所以我假设我的环境变量搞砸了,而不是修复我尝试在 Windows 上安装 grep,但这给了我同样的错误....
问题是,从HTML 中去除HTTP 链接的正确方法是什么? ?有了它,我将使它适合我的情况。
附言我已经阅读了很多链接/Stack Overflow 帖子,以至于显示我的引用文献会花费太长时间......如果需要示例 HTML 来显示过程的复杂性,那么我会添加它。
我还有一台 Mac 和 PC,我在它们之间来回切换以使用它们的 shell/batch/grep 命令/终端命令,所以要么要么会帮助我。
我还想指出我在正确的目录中
HTML:
<tr valign="top">
<td class="beginner">
B03
</td>
<td>
<a href="http://www.drawspace.com/lessons/b03/simple-symmetry">Simple Symmetry</a> </td>
</tr>
<tr valign="top">
<td class="beginner">
B04
</td>
<td>
<a href="http://www.drawspace.com/lessons/b04/faces-and-a-vase">Faces and a Vase</a> </td>
</tr>
<tr valign="top">
<td class="beginner">
B05
</td>
<td>
<a href="http://www.drawspace.com/lessons/b05/blind-contour-drawing">Blind Contour Drawing</a> </td>
</tr>
<tr valign="top">
<td class="beginner">
B06
</td>
<td>
<a href="http://www.drawspace.com/lessons/b06/seeing-values">Seeing Values</a> </td>
</tr>
预期输出:
http://www.drawspace.com/lessons/b03/simple-symmetry
http://www.drawspace.com/lessons/b04/faces-and-a-vase
http://www.drawspace.com/lessons/b05/blind-contour-drawing
etc.
最佳答案
$ sed -n 's/.*href="\([^"]*\).*/\1/p' file
http://www.drawspace.com/lessons/b03/simple-symmetry
http://www.drawspace.com/lessons/b04/faces-and-a-vase
http://www.drawspace.com/lessons/b05/blind-contour-drawing
http://www.drawspace.com/lessons/b06/seeing-values
关于bash - 如何在 Bash 或 grep 或批处理中删除 HTML 文件的所有链接并将它们存储在文本文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21264626/