如何使用 grep 命令搜索数据库文件中除超链接和 http://www.example.com 之外的所有 URL,并将其存储在不同的文件中

如何使用 grep 命令搜索数据库文件中除超链接和 http://www.example.com 之外的所有 URL,并将其存储在不同的文件中

我有一个名为 prod_database.sql 的数据库文件,我想搜索该文件中除超链接* 之外的所有 URLhttp://www.example.com并想将结果存储在文件中。
超链接模式*:<a href="http://www.hyperlink.com"></a> 假设我有一个文件 prod_database.sql 其内容如下

<html>
    <head>
    <script src="http://www.script.com/javascript1.js">
        <link href="http://www.css.com/style.css">
    </head>
    <body>
    Hello Anwar<br/>
    <a href="http://www.anchortag.com">Google</a><br/>
    <iframe src="http://www.iframe.com"></iframe>
    </body>
</html>

所以我必须搜索上面文件中不属于锚标记(超链接)部分的所有 URL,我应该从 获取 URL <script><link>并且 iframe 标记仅预期结果:http://www.script.com/javascript1.js,http://www.css.com/style.css,http://www.iframe.com

答案1

以下内容有点丑陋,但似乎可以满足您的要求:

cat prod_database.sql | grep -Ev "<a href=\".*\">.*<\/a>" | grep -E "<.*=\"http:" | sed -r 's/^<.*=\"http/http/' | sed -r 's/\">.*$//'
http://www.script.com/javascript1.js
http://www.css.com/style.css
http://www.iframe.com

要将其存储在文件中,只需将其重定向到您想要的内容,如下所示:

cat prod_database.sql | grep -Ev "<a href=\".*\">.*<\/a>" | grep -E "<.*=\"http:" | sed -r 's/^<.*=\"http/http/' | sed -r 's/\">.*$//' > somefile.txt

内容如下:

cat somefile.txt 
http://www.script.com/javascript1.js
http://www.css.com/style.css
http://www.iframe.com

或者,通过以下方式切换到替代语法/方法(如 user1133275 所提到的):

cat prod_database.sql | grep -Ev "<a href=\".*\">.*<\/a>" | grep -E "<.*=\"http:" | perl -pe 's/^<.*=\"http/http/' | perl -pe 's/\">.*$//'

要将其存储在文件中,只需将其重定向到您想要的内容,如下所示(使用更新的语法):

cat prod_database.sql | grep -Ev "<a href=\".*\">.*<\/a>" | grep -E "<.*=\"http:" | perl -pe 's/^<.*=\"http/http/' | perl -pe 's/\">.*$//' > somefile.txt

答案2

grep-P选项一起使用

grep -o -P '(?!<.*?(?<!(href))=")https?:\/\/(?!(www\.example\.com)).*?(?=(">))' input.txt > output.txt

命令读取input.txt文件并写入output.txt文件。根据您的需要更改文件名。

测试

输入.txt(我把你的例子复杂化了一点)

<html>
<head>
<script src="http://www.script.com/javascript1.js"><script src="http://www.script.com/javascript2.js">

<link href="http://www.css.com/style.css">one <a><a href="http://www.anchortag.com">Google</a><br/>
</head>
<body>
Hello Anwar<br/><script src="https://www.script.com/javascript3.js">
<script src="http://www.script.com/javascript4.js">

<a href="http://www.anchortag.com">Google</a><br/>some words<a href="http://www.anchortag.com">Google</a><br/>

<iframe src="http://www.example.com"></iframe>
<br><br><iframe src="http://www.iframe.com"></iframe>
<iframe src="https://www.some_site1.com"></iframe><iframe src="https://www.some_site2.com"></iframe>
</body>
</html>

输出.txt

http://www.script.com/javascript1.js
http://www.script.com/javascript2.js
http://www.css.com/style.css
http://www.anchortag.com
https://www.script.com/javascript3.js
http://www.script.com/javascript4.js
http://www.anchortag.com
http://www.anchortag.com
http://www.iframe.com
https://www.some_site1.com
https://www.some_site2.com

相关内容