grep通过并返回href的内容如果匹配?

时间:2011-12-14 00:40:49

标签: linux grep

这是我目前的grep:

grep -l -R "battle/" * > /home/results.txt
(This returns the files that it is in)

我想查看每个文件并找到实例“battle /”,然后编译它指向的链接列表。

例如:

<a href="http://www.site.com/battle/index.php">Index</a>
<a href="http://www.site.com/battle/contact.php">Contact</a>
<a href="http://www.site.com/battle/go/here/folder/file.php">Long weird path</a>

我希望grep结果像这样返回:

http://www.site.com/battle/index.php
http://www.site.com/battle/contact.php
http://www.site.com/battle/go/here/folder/file.php

基本上,我们有链接到我们正在删除的文件夹中的页面,因此我们想要找到这些页面中仍在使用的链接。

我想争取战斗/并返回href内的整个路径。

然后我希望将结果输出到我的results.txt文件。

我怎么去做这个grep?谢谢:))

1 个答案:

答案 0 :(得分:2)

100%可靠地做到这一点很棘手,没有丢失你想要的东西的风险或抓住你没有的东西;但是一个好的第一近似可能是:

grep -R -o 'http://www.site.com/battle/[^"]*' * > /home/results.txt

-o标志表示“仅”输出实际匹配的字符串,而不是包含它们的整行。)

毋庸置疑,这不会捕获使用相对URL的任何链接,例如<a href="/battle/contact.php">或诸如此类的东西,如果链接用单引号而不是双引号包装URL,它将会混淆。 。 。还有其他各种方法可能出错。 grep基本上受限于您对输入数据的确切形状的信心。当输入数据最初没有考虑到grep时,很难实现完美的信心。