sed 命令无法正确输出

问题描述 投票:0回答:1

我一直在使用 sed 命令。 我尝试使用 sed 命令获取我的网络地址。 我的主人就像

$ hostname -I
192.168.11.12

我只想获取“192.168.11”。从上面的地址。 我试过了

hostname -I | sed -E  's/([0-9]{1,3}\.)([0-9]{1,3}.)([0-9]{1,3}\.)([0-9]{1,3})$/\1\2\3/'

但是它不起作用,我明白了

192.168.11.12

尽管如此

echo "192.168.11.12" | sed -E  's/([0-9]{1,3}\.)([0-9]{1,3}.)([0-9]{1,3}\.)([0-9]{1,3})$/\1\2\3/'

工作正常。 有谁知道出了什么问题吗?

我的环境:Ubuntu 22.04.3 LTS

linux bash shell sed
1个回答
0
投票

看起来 sed 命令中的问题与正则表达式模式及其应用方式有关。

试试这个

hostname -I | sed -E 's/([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.).*/\1/'

看看是否有帮助

© www.soinside.com 2019 - 2024. All rights reserved.