bash - 如何在 Bash 或 grep 或批处理中删除 HTML 文件的所有链接并将它们存储在文本文件中

标签 bash shell awk grep cut

我有一个文件 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 命令/终端命令,所以要么要么会帮助我。

我还想指出我在正确的目录中

Enter image description here

HTML:

<tr valign="top">
    <td class="beginner">
      B03&nbsp;&nbsp;
    </td>
    <td>
        <a href="http://www.drawspace.com/lessons/b03/simple-symmetry">Simple Symmetry</a>  </td>
</tr>

<tr valign="top">
  <td class="beginner">
    B04&nbsp;&nbsp;
  </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&nbsp;&nbsp;
    </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&nbsp;&nbsp;
    </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/

相关文章:

bash - 在 bash 中执行命令时如何保留引号

linux - 如何在 for 循环中处理文件名中的空格?

linux - 编写脚本以获取用户输入并使用错误检查来测试是否输入了两个参数 : Linux

linux - 在 Linux 中比较文本文件并为文件 2 中的元素返回文件 1 中的元素

android - 如何从 Android 模拟器 "remove"root 访问并在 adb 中获得正常的 shell 提示符?

python - 巨大的文本文件 (6Gb) 搜索和替换

xml - 用包含斜杠的字符串替换 xml 属性

linux - 毫米 :ss calculator from shell prompt?

shell - 如何使用awk删除以 "C"开头的行?

linux - awk函数语法错误?