Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用egrep复制URL_Bash_Unix_Scripting_Grep - Fatal编程技术网

Bash 使用egrep复制URL

Bash 使用egrep复制URL,bash,unix,scripting,grep,Bash,Unix,Scripting,Grep,我试图在bash中创建一个脚本,从一个文本文件(example.com、example.eu等)中查找URL,并使用egrep将它们复制到另一个文本文件中。我当前的输出提供了我想要的URL,但不幸的是,还有很多我不想要的URL,比如123.123或example.3xx 我的脚本当前如下所示: egrep -o '\w*\.[^\d\s]\w{2,3}\b' lab4trace.txt > lab4url.txt 我试着使用一些正则表达式检查器站点,但是站点上的正则表达式给了我比我自己的

我试图在bash中创建一个脚本,从一个文本文件(example.com、example.eu等)中查找URL,并使用egrep将它们复制到另一个文本文件中。我当前的输出提供了我想要的URL,但不幸的是,还有很多我不想要的URL,比如123.123或example.3xx

我的脚本当前如下所示:

egrep -o '\w*\.[^\d\s]\w{2,3}\b' lab4trace.txt > lab4url.txt
我试着使用一些正则表达式检查器站点,但是站点上的正则表达式给了我比我自己的结果更正确的答案


任何帮助都会被告知

如果你知道域名后缀,你可以有一个正则表达式,它基于(并且)域名是一系列标签,可以包含除
之外的任何字符,由
分隔。由于您只需要那些可用于生成模式列表的有效TLD:

grep -i -E -f <(curl -s https://data.iana.org/TLD/tlds-alpha-by-domain.txt | sed 's/^/([^.]{1,63}\\\.){1,4}/') <<'EOF'
aaa.ali.bab.yandex
fsfdsa.d.s
alpha flkafj
foo.bar.zone
alpha.beta.gama.delta.zappos
example.com
EOF

注意:这是一个内存杀手,上面的例子是2GB,TLD的列表是巨大的,你可以考虑搜索一个常用的TLD列表,然后使用它。

这能回答你的问题吗?这确实会有帮助,但我不确定有多少后缀是域后缀,有多少是.png或类似的后缀。我考虑过下载另一个包含所有支持的域后缀的文本文件,并交叉引用这两个文件,但这听起来像是一个麻烦。
aaa.ali.bab.yandex
foo.bar.zone
alpha.beta.gama.delta.zappos
example.com