grep/sed命令获取命令输出ip

1、首先获取给定文本中的ip地址。

假设文本内容如下,并命名为“ip.txt”。

root@:/ # netcfg
lo       UP                                   127.0.0.1/8   0x00000049 00:00:00:00:00:00
rmnet0   DOWN                                   0.0.0.0/0   0x00001002 4e:c0:15:04:86:ea
sit0     DOWN                                   0.0.0.0/0   0x00000080 00:00:00:00:00:00
ip6tnl0  DOWN                                   0.0.0.0/0   0x00000080 00:00:00:00:00:00
eth0     UP                               192.168.2.139/24  0x00001043 00:00:00:00:00:ff
root@:/ #

在该文本同一目录下,新建“1.sh”脚本。内容如下。

#!/bin/sh
DIR=`pwd`
cat "$DIR/ip.txt"                                                                                        
echo "/**************grep**************/"
cat $DIR/ip.txt|grep '192'|grep -E -o '([0-9]{1,3}\.){3}[0-9]{1,3}/[0-9]{1,2}'
cat $DIR/ip.txt|grep '192'|grep -E -o '([0-9]{1,3}\.){3}[0-9]{1,3}'
qwe=`cat $DIR/ip.txt|grep '192'|grep -E -o '([0-9]{1,3}\.){3}[0-9]{1,3}/[0-9]{1,2}'`
echo "$qwe"                                                                                              
echo "/****************sed**********/"
#删除 eth0 up
cat ip.txt |grep '192'|sed 's/^.*UP//g'
#删除 eth0 up 前面的空格
cat ip.txt |grep '192'|sed 's/^.*UP//g'| sed 's/^[ \t]*//g'
#删除 eth0 up 前面的空格 后面的部分
cat ip.txt |grep '192'|sed 's/^.*UP//g'| sed 's/^[ \t]*//g'|sed 's/0x.*$//g' 

运行情况如下。

root@ubuntu:~# ./1.sh 
root@:/ # netcfg
lo       UP                                   127.0.0.1/8   0x00000049 00:00:00:00:00:00
rmnet0   DOWN                                   0.0.0.0/0   0x00001002 4e:c0:15:04:86:ea
sit0     DOWN                                   0.0.0.0/0   0x00000080 00:00:00:00:00:00
ip6tnl0  DOWN                                   0.0.0.0/0   0x00000080 00:00:00:00:00:00
eth0     UP                               192.168.2.139/24  0x00001043 00:00:00:00:00:ff
root@:/ # 
/**************grep**************/
192.168.2.139/24
192.168.2.139
192.168.2.139/24
/****************sed**********/
                               192.168.2.139/24  0x00001043 00:00:00:00:00:ff
192.168.2.139/24  0x00001043 00:00:00:00:00:ff
192.168.2.139/24  
root@ubuntu:~# 

2、获取ifconfig命令打印中的ip。

root@ubuntu:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0c:29:66:09:96  
          inet addr:192.168.2.195  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe66:996/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:120671 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9421 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:15383396 (15.3 MB)  TX bytes:1207758 (1.2 MB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:248 errors:0 dropped:0 overruns:0 frame:0
          TX packets:248 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:19755 (19.7 KB)  TX bytes:19755 (19.7 KB)

root@ubuntu:~# ifconfig |grep 'inet[^6]'                                         
          inet addr:192.168.2.195  Bcast:192.168.2.255  Mask:255.255.255.0                               
          inet addr:127.0.0.1  Mask:255.0.0.0                                                            
root@ubuntu:~# ifconfig |grep 'inet[^6]' |  awk '{ print $2}' | awk -F: '{print $2}'
192.168.2.195                                                                                            
127.0.0.1
root@ubuntu:~# ifconfig |grep 'inet[^6]' |  awk '{ print $2}' | awk -F: '{print $2}'| grep '1[^2]'
192.168.2.195                                                                                            
root@ubuntu:~# 

sed命令怎么去掉“192.168.2.139/24”后面的“/24”还需要再研究。后期再更新。

参考链接:

https://www.cnblogs.com/ctaixw/p/5860221.html

https://blog.csdn.net/weixin_37517908/article/details/78106916

https://www.cnblogs.com/kerrycode/archive/2015/06/16/4581030.html

 

你可能感兴趣的:(Shell)