这个 sed 有什么问题吗?

这个 sed 有什么问题吗?

我想修改“relvir”的 IP 地址:

127.0.0.1   localhost
127.0.1.1   debian-foo.jimnet debian-foo

54.218.208.77   server1
31.187.98.19    machine2
51.39.207.120   relvir

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

我试图这样做,但我不明白为什么它不起作用:

cat sedtest | sed 's/.+relvir$/1.2.3.4 relvir/'

提前致谢!

答案1

基本正则表达式 sed将按字面意思处理+,以执行所需的替换,使用*量词:

cat sedtest | sed 's/.*relvir$/1.2.3.4 relvir/'

继续+作为量词使用扩展正则表达式应用-E选项:

cat sedtest | sed -E 's/.+relvir$/1.2.3.4 relvir/'

答案2

我相信这就是您正在寻找的

猫 sedtest | sed 's/.\+relvir$/1.2.3.4 relvir/'

相关内容