获取每个ip address/ifconfig接口命令的前3行Linux
Get the first 3 lines of each ip address/ifconfig interface command Linux
我正在尝试从某些虚拟机获取 ip address/ifconfig 的前 3 行 - 其中一些是 运行 在 Ubuntu 上,一些在 CentOS 上。
例如:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
inet 172.31.106.100 netmask 255.255.240.0 broadcast 172.31.111.255
inet6 fe80::10c5:1dff:fec0:803e prefixlen 64 scopeid 0x20<link>
ether 12:c5:1d:c0:80:3e txqueuelen 1000 (Ethernet)
RX packets 7483 bytes 7706844 (7.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2998 bytes 470781 (459.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 12100 bytes 3865475 (3.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12100 bytes 3865475 (3.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
从这行代码中,我只需要得到以下部分:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
inet 172.31.106.100 netmask 255.255.240.0 broadcast 172.31.111.255
inet6 fe80::10c5:1dff:fec0:803e prefixlen 64 scopeid 0x20<link>
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
同样适用于 ip 地址命令。
有什么方法可以使用 Linux 命令来实现吗?
非常感谢,
罗曼
您可以使用 sed
来做到这一点,
ifconfig | sed -En '/^[^[:space:]]/,+2p; /^[[:space:]]*$/p'
简要说明,
- 管道结果将由
sed
处理
/^[^[:space:]]/,+2p
: 搜索并打印不是以空白开头的行,同时打印以下2行
/^[[:space:]]*$/p
:搜索并打印空行
我正在尝试从某些虚拟机获取 ip address/ifconfig 的前 3 行 - 其中一些是 运行 在 Ubuntu 上,一些在 CentOS 上。
例如:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
inet 172.31.106.100 netmask 255.255.240.0 broadcast 172.31.111.255
inet6 fe80::10c5:1dff:fec0:803e prefixlen 64 scopeid 0x20<link>
ether 12:c5:1d:c0:80:3e txqueuelen 1000 (Ethernet)
RX packets 7483 bytes 7706844 (7.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2998 bytes 470781 (459.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 12100 bytes 3865475 (3.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12100 bytes 3865475 (3.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
从这行代码中,我只需要得到以下部分:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
inet 172.31.106.100 netmask 255.255.240.0 broadcast 172.31.111.255
inet6 fe80::10c5:1dff:fec0:803e prefixlen 64 scopeid 0x20<link>
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
同样适用于 ip 地址命令。 有什么方法可以使用 Linux 命令来实现吗?
非常感谢,
罗曼
您可以使用 sed
来做到这一点,
ifconfig | sed -En '/^[^[:space:]]/,+2p; /^[[:space:]]*$/p'
简要说明,
- 管道结果将由
sed
处理
/^[^[:space:]]/,+2p
: 搜索并打印不是以空白开头的行,同时打印以下2行/^[[:space:]]*$/p
:搜索并打印空行