仅从输入 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