提取linux中eth0的IP地址

法1:cut

[root@oldboy oldboy]# ifconfig eth0|grep 'inet addr'|cut -d ":" -f2|cut -d " " -f1

10.0.0.162

法2:awk

[root@oldboy oldboy]# ifconfig eth0|grep 'inet addr'|awk -F ":" '{print $2}'|awk '{print $1}'

10.0.0.162

说明:这里的awk同上文的cut,但是比cut功能强大的多,-F ":" 中的-F表示指定分割符:,如果不加-F默认就是空格分割符。后面的写法是两个单引号中间是一定一对大括号,然后大括号里是print $n,这个n就是前面使用分割符后的第几个字段,如第一字段就是$1,第二个就是$2

ifconfig eth0 |awk -F '[ :]+' 'NR==2 {print $4}'

提示:本题NR是行号,分隔符+号匹配,[]里一个或多个任意一个分隔符,这里就是匹配一个或多个冒号或空格。

1)awk-F 后面跟分隔符‘[空格:]+’,其中[空格:]多分隔符写法,意思是以空格或冒号做分隔,后面的"+"号是正则表达式,意思是匹配前面空格或冒号,两者之一的1个或1个以上。

2)NR==2和sed -n "2p",相当,意思都是选择第几行

#echo ---1:----2|awk -F '[-:]+' '{print $2}'     

1

#echo ---1:----2|awk -F '[-:]+' '{print $3}'     

2

#echo ---1:::::2|awk -F '[-:]+' '{print $3}'    

 

2

 ---------------------------------------------------------------------------------------------------------------------------------------------------------

sed拓展内容:

sed -i 's///g' oldboy.log

sed -i 's###g' oldboy.log

#→观察特点:两边是引号,引号里面的两边分别为s和g,中间是三个一样的字符/或#。

每个字符/或#中间前面的间隔就是被替换的内容,后面的间隔就是替换后的内容。

记 sed 's///g' file #→单引号里两边是s(替换模式)和g(全局匹配替换) 中间是三个斜线,好记吧。

参数意义:

sed -i 's///g' oldboy.log

-i 表示修改文件内容。

g与s联合使用时,表示对当前行全局匹配替换(与单独g意义不同)

s常说的查找并替换,用一个字符串替换成另一个

例子:方框▇三角▲互相替换例子

[oldboy@student ~]$ cat oldboy.log

[oldboy@student ~]$ sed -i 's/▇/▲/g' oldboy.log

[oldboy@student ~]$ cat oldboy.log

[oldboy@student ~]$ sed -i "s/▲/▇/g" oldboy.log

[oldboy@student ~]$ cat oldboy.log

[oldboy@student ~]$ sed -i 's#▇#▲#' oldboy.log

[oldboy@student ~]$ cat oldboy.log

[oldboy@student ~]$ sed -i 's#▇#▲#g' oldboy.log

sed是一个强大的流编辑器命令,在工作中表现出色。尤其是字符替换功能

 

原文地址:https://www.cnblogs.com/wjoyxt/p/3792119.html