仅从输入 url 字符串中去除域名
Strip only domain name out of input url string
已经进行了一些搜索,但似乎无法找到执行此操作的优雅方法。我希望能够搜索如下所示的列表,最后只得到一个包含域名的纯文本输出文件,没有 http:// 或 /
之后的任何内容
所以这样的列表:
http://7wind.ru/file/Behind+the+dune/
http://aldersgatencsc.org/open.php?utm_source=5r2ke0ow6k&utm_medium=qqod2h9a88&utm_campaign=2d1hl1v8c5&utm_term=mz34ligqc4&utm_content=bgi71kl5oy
http://amunow.org/test.php?utm_source=5r2ke0ow6k&utm_medium=qqod2h9a88&utm_campaign=2d1hl1v8c5&utm_term=dhxg1r4l76&utm_content=tr71txtklp
我想以这样的纯文本输出文件结束。
7wind.ru
aldersgatencsc.org
amunow.org
awk -F \/ '{ print }' outputfile > newfile
打印由 /
分隔的第三个字段
尝试跟随 awks。
解法一:
awk '{sub(/.*\/\//,"");sub(/\/.*/,"");print}' Input_file
解决方案二:
awk '{match([=11=],/\/.[^/]*/);print substr([=11=],RSTART+2,RLENGTH-2)}' Input_file
这通过首先剥离协议和 ://
,然后是包括下一个斜线在内的任何内容来实现。
sed "s|.*://||; s|/.*||" url-list.txt
添加-i
直接改文件
试试这个正则表达式
((http|https):\/\/)?([a-zA-Z\.]+)(\/)?
第一场比赛,第三组
但它也可能验证无效 url!小心
鉴于:
$ echo "$txt"
http://7wind.ru/file/Behind+the+dune/
http://aldersgatencsc.org/open.php?utm_source=5r2ke0ow6k&utm_medium=qqod2h9a88&utm_campaign=2d1hl1v8c5&utm_term=mz34ligqc4&utm_content=bgi71kl5oy
http://amunow.org/test.php?utm_source=5r2ke0ow6k&utm_medium=qqod2h9a88&utm_campaign=2d1hl1v8c5&utm_term=dhxg1r4l76&utm_content=tr71txtklp
您可以使用 cut
:
$ echo "$txt" | cut -d'/' -f3
7wind.ru
aldersgatencsc.org
amunow.org
或者,如果您的内容在文件中:
$ cut -d'/' -f3 file
7wind.ru
aldersgatencsc.org
amunow.org
然后将其重定向到您想要的文件:
$ cut -d'/' -f3 file >new_file
$ sed -r 's#.*//([^/]*)/.*##' Input_file
7wind.ru
aldersgatencsc.org
amunow.org
已经进行了一些搜索,但似乎无法找到执行此操作的优雅方法。我希望能够搜索如下所示的列表,最后只得到一个包含域名的纯文本输出文件,没有 http:// 或 /
之后的任何内容所以这样的列表:
http://7wind.ru/file/Behind+the+dune/
http://aldersgatencsc.org/open.php?utm_source=5r2ke0ow6k&utm_medium=qqod2h9a88&utm_campaign=2d1hl1v8c5&utm_term=mz34ligqc4&utm_content=bgi71kl5oy
http://amunow.org/test.php?utm_source=5r2ke0ow6k&utm_medium=qqod2h9a88&utm_campaign=2d1hl1v8c5&utm_term=dhxg1r4l76&utm_content=tr71txtklp
我想以这样的纯文本输出文件结束。
7wind.ru
aldersgatencsc.org
amunow.org
awk -F \/ '{ print }' outputfile > newfile
打印由 /
分隔的第三个字段尝试跟随 awks。
解法一:
awk '{sub(/.*\/\//,"");sub(/\/.*/,"");print}' Input_file
解决方案二:
awk '{match([=11=],/\/.[^/]*/);print substr([=11=],RSTART+2,RLENGTH-2)}' Input_file
这通过首先剥离协议和 ://
,然后是包括下一个斜线在内的任何内容来实现。
sed "s|.*://||; s|/.*||" url-list.txt
添加-i
直接改文件
试试这个正则表达式
((http|https):\/\/)?([a-zA-Z\.]+)(\/)?
第一场比赛,第三组 但它也可能验证无效 url!小心
鉴于:
$ echo "$txt"
http://7wind.ru/file/Behind+the+dune/
http://aldersgatencsc.org/open.php?utm_source=5r2ke0ow6k&utm_medium=qqod2h9a88&utm_campaign=2d1hl1v8c5&utm_term=mz34ligqc4&utm_content=bgi71kl5oy
http://amunow.org/test.php?utm_source=5r2ke0ow6k&utm_medium=qqod2h9a88&utm_campaign=2d1hl1v8c5&utm_term=dhxg1r4l76&utm_content=tr71txtklp
您可以使用 cut
:
$ echo "$txt" | cut -d'/' -f3
7wind.ru
aldersgatencsc.org
amunow.org
或者,如果您的内容在文件中:
$ cut -d'/' -f3 file
7wind.ru
aldersgatencsc.org
amunow.org
然后将其重定向到您想要的文件:
$ cut -d'/' -f3 file >new_file
$ sed -r 's#.*//([^/]*)/.*##' Input_file
7wind.ru
aldersgatencsc.org
amunow.org