修改网址,保留域名部分,剥离其他人

时间:2017-01-11 20:39:33

标签: regex linux bash url

我的文件已满了网址。每行都有一个URL。我只想保留协议和域名部分。

示例:

https://example0.com/example.php?id=example0
https://example1.com/example.php?id=example1
https://example2.com/example.php?id=example2

应格式化为:

https://example0.com/
https://example1.com/
https://example2.com/

我使用的是Linux终端,所以Bash会是我认为最好的。我已经听说过sed,但我不知道如何使用它或如何使用表达式。

3 个答案:

答案 0 :(得分:1)

使用GNU sed:

sed -r 's|([^/]*//[^/]*/).*|\1|' file

输出:

    https://example0.com/
    https://example1.com/
    https://example2.com/

如果你想编辑你的文件"就地"使用sed的选项-i

请参阅:The Stack Overflow Regular Expressions FAQ

答案 1 :(得分:0)

尝试以下

https?:\/\/[^\/]+

https://regex101.com/r/8MdA6I/1

答案 2 :(得分:0)

您可以像这样使用cut -d/ -f1-3 yourfile

/

它使用//作为分隔符,并选择字段1到3(/为空字段2)。

如果你真的需要尾部斜杠,你可以将所有内容传输给sed,通过将其添加到命令中来添加| sed "s+$+/+g" `

Could not instantiate mail function