替换终端中包含正则表达式的文本

时间:2016-10-12 20:26:00

标签: regex linux replace sed terminal

我想用终端

中的sed命令替换IP地址
sed -i "2 s=http://*:8000=http://example.com=g" file.txt;

*可以改变的地方。我以为我可以用*替换http://和:8000之间的任何字符,但它的行为就像纯文本一样。

我如何检查包含http://和:8000部分的字符串,其中包含任何内容,并将其替换为http://example.com

1 个答案:

答案 0 :(得分:1)

*是一个与0个或多个要量化的模式匹配的量词。

您要匹配/和空格以外的任意数量的字符,即[^/[:space:]]*

使用

sed -i "2 s=http://[^/[:space:]]*:8000=http://example.com=g" file.txt;
                   <------------>