Centos7 ,使用grep,cut awk 提取IP地址
Posted xiaojin21cen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Centos7 ,使用grep,cut awk 提取IP地址相关的知识,希望对你有一定的参考价值。
1、任务说明
本示例的主要目的是练习 grep、cut 、awk 的使用 。
任务说明,在 centos7 ,是 提取 IP 地址。
[java@localhost java_demo]$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.109.128 netmask 255.255.255.0 broadcast 192.168.109.255
inet6 f000::9000:8000:3000:6000 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:15:69:41 txqueuelen 1000 (Ethernet)
RX packets 245 bytes 27187 (26.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 285 bytes 27165 (26.5 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 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:e9:59:cf txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
分析:
ens33 是 当前主机的IP 配置,inet 是IP地址, 192.168.109.128
就是想要的结果。
2、用 cut 操作步骤
2.1、提取关键行
ens33 是 当前主机的IP 配置 ,inet 是IP地址,通过 grep "netmask"
获取当前行
[java@localhost java_demo]$ ifconfig ens33 | grep "netmask"
inet 192.168.109.128 netmask 255.255.255.0 broadcast 192.168.109.255
2.2、尝试分割提取
想要把 192.168.109.128
提取出来,使cut 进行字符分割 。
cut -d " " -f 2
,分割空格,提取第2列,如下:
[java@localhost java_demo]$ ifconfig ens33 | grep "netmask" | cut -d " " -f 2
[java@localhost java_demo]
结果是空的,为什么呢?
再看下面的示例,
[java@localhost java_demo]$ ifconfig ens33 | grep "netmask" | cut -d " " -f 2-
inet 192.168.109.128 netmask 255.255.255.0 broadcast 192.168.109.255
[java@localhost java_demo]$ ifconfig ens33 | grep "netmask" | cut -d " " -f 4-
inet 192.168.109.128 netmask 255.255.255.0 broadcast 192.168.109.255
[java@localhost java_demo]$ ifconfig ens33 | grep "netmask" | cut -d " " -f 6-
inet 192.168.109.128 netmask 255.255.255.0 broadcast 192.168.109.255
[java@localhost java_demo]$ ifconfig ens33 | grep "netmask" | cut -d " " -f 8-
inet 192.168.109.128 netmask 255.255.255.0 broadcast 192.168.109.255
发现规律, 提取行的前面有大量的空格,导致用空格进行分割时,出现大量的空白。所以要先去空格。
2.3、去空格
去空格的方法,参考我的另一篇文章: shell 去空格 ,这里不详述。
[java@localhost java_demo]$ ifconfig ens33 | grep "netmask" | awk '$1=$1'
inet 192.168.109.128 netmask 255.255.255.0 broadcast 192.168.109.255
2.4、分割提取
cut 字符分割,提取第2列,
[java@localhost java_demo]$ ifconfig ens33 | grep "netmask" | awk '$1=$1'| cut -d " " -f 2
192.168.109.128
3、用 awk 操作步骤
3.1、提取关键行
ens33 是 当前主机的IP 配置 ,inet 是IP地址,通过 grep "netmask"
获取当前行
[java@localhost java_demo]$ ifconfig ens33 | grep "netmask"
inet 192.168.109.128 netmask 255.255.255.0 broadcast 192.168.109.255
3.2、分割提取
awk 字符分割,提取第2列,
[java@localhost java_demo]$ ifconfig ens33 | grep "netmask" | awk -F" " '{print $2}'
192.168.109.128
以上是关于Centos7 ,使用grep,cut awk 提取IP地址的主要内容,如果未能解决你的问题,请参考以下文章
如何通过命令行实用程序操作文本:grep、cut、awk、sed 或 BBEdit(Grep 查找选项)
text Shell grep,awk,sed,cut文本处理对比
文本处理cat more less head tail sort uniq grep cut jion sed awk
云计算学习Days2--cat head tail sort uniq wc cut sed grep awk tr
linux基础篇07,linux文本处理cat more less head tail sort uniq grep cut jion sed awk