提取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 -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是一个强大的流编辑器命令,在工作中表现出色。尤其是字符替换功能