7月24日 系统正则符号和sed

2019-07-24  本文已影响0人  Mashirooooo

sed命令

修改文件内容,对文件行进行操作
配置文件,文本文件

语法结构

sed [参数] ‘条件 指令’ 文件信息

[root@oldboy63-libo oldboy]$ sed -n '/disabled/p' /etc/selinux/config 
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
sed操作方式
在文中添加信息
将文件中指定信息删除
替换修改文件内容
查找相应内容信息

查看文件信息

按指定行查询内容
[root@oldboy63-libo oldboy]$ cat person.txt 
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
============================================================================
[root@oldboy63-libo oldboy]$ sed -n '3p' person.txt 
103,Alex,COO
============================================================================
[root@oldboy63-libo oldboy]$ sed -n '2p;5p' person.txt 
102,zhaoyao,CTO
105,feixue,CIO
============================================================================
[root@oldboy63-libo oldboy]$ sed -n '2,5p' person.txt 
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
按指定内容进行过滤
[root@oldboy63-libo oldboy]$ cat person.txt 
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
[root@oldboy63-libo oldboy]$ sed -n '/Alex/p' person.txt 
103,Alex,COO
[root@oldboy63-libo oldboy]$ sed -n '/oldboy/p;/yy/p' person.txt 
101,oldboy,CEO
104,yy,CFO
[root@oldboy63-libo oldboy]$ sed -n '/oldboy\|yy/p' person.txt 
101,oldboy,CEO
104,yy,CFO
在指定行后面添加信息
[root@oldboy63-libo oldboy]$ sed '2aoldboy' person.txt 
101,oldboy,CEO
102,zhaoyao,CTO
oldboy
103,Alex,COO
104,yy,CFO
105,feixue,CIO
============================================================================

[root@oldboy63-libo oldboy]$ sed 'aoldboy' person.txt  person.txt 
101,oldboy,CEO
oldboy
102,zhaoyao,CTO
oldboy
103,Alex,COO
oldboy
104,yy,CFO
oldboy
105,feixue,CIO
oldboy
101,oldboy,CEO
oldboy
102,zhaoyao,CTO
oldboy
103,Alex,COO
oldboy
104,yy,CFO
oldboy
105,feixue,CIO
oldboy
============================================================================
[root@oldboy63-libo oldboy]$ sed '$aoldboy' person.txt 
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
oldboy
在指定行前面添加信息
[root@oldboy63-libo oldboy]$ sed '2ioldboy' person.txt 
101,oldboy,CEO
oldboy
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
============================================================================
[root@oldboy63-libo oldboy]$ sed 'ioldboy' person.txt 
oldboy
101,oldboy,CEO
oldboy
102,zhaoyao,CTO
oldboy
103,Alex,COO
oldboy
104,yy,CFO
oldboy
105,feixue,CIO
============================================================================
[root@oldboy63-libo oldboy]$ sed '1ioldboy' person.txt 
oldboy
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
多行添加信息

连续多行

[root@oldboy63-libo oldboy]$ sed -e '2,4aoldboy' person.txt 
101,oldboy,CEO
102,zhaoyao,CTO
oldboy
103,Alex,COO
oldboy
104,yy,CFO
oldboy
105,feixue,CIO

不连续多行

[root@oldboy63-libo oldboy]$ sed -e '2aoldboy' -e '4aoldboy' person.txt 
101,oldboy,CEO
102,zhaoyao,CTO
oldboy
103,Alex,COO
104,yy,CFO
oldboy
105,feixue,CIO

直接添加多行内容

[root@oldboy63-libo oldboy]$ sed '2aoldboy\noldgirl\noldbaby' person.txt 
101,oldboy,CEO
102,zhaoyao,CTO
oldboy
oldgirl
oldbaby
103,Alex,COO
104,yy,CFO
105,feixue,CIO
删除指定信息

按行删除指定信息

[root@oldboy63-libo oldboy]$ sed '4d' person.txt 
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
105,feixue,CIO
[root@oldboy63-libo oldboy]$ sed -r '/Alex|oldboy/d' person.txt 
102,zhaoyao,CTO
104,yy,CFO
105,feixue,CIO

删除/etc/service文件中注释和空行
sed -r '/^$|^#d' /etc/services
sed -rn '/^$|^#/!p' /etc/services

替换操作

sed -r '/IPADDR/s#(IP.*=)10.0.0.2#\110.0.0.201#g' /etc/sysconfig/network-scripts/ifcfg-eth0
利用&实现后项应用前项正则匹配到的信息

[root@oldboy63-libo oldboy]$ echo "123456"|sed 's#[0-9]\+#<&>#g'
<123456>
[root@oldboy63-libo oldboy]$ echo "123456"|sed -r 's#[0-9]{1}#<&>#g'
<1><2><3><4><5><6>
利用sed取出IP地址

显示IP地址
ip a s eth0
ifconfig eth0
筛除指定行
ip a s etho0|sed -n '3p'
取出IP地址

[root@oldboy63-libo oldboy]$ ip a s eth0|sed -n '3p'|sed -r 's#^.*t (.*)#\1#g'|sed -r 's#(.*)/24.$#\1#g'
10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0
[root@oldboy63-libo oldboy]$ ip a s eth0|sed -nr '3s#^.*t (.*)/24.*$#\1#gp'
10.0.0.200
利用sed获取文件属性权限数值
[root@oldboy63-libo oldboy]$ stat /etc/hosts|sed -n '4p'|sed -r 's#^A.*\((.*)/-.*$#\1#g'
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
上一篇下一篇

猜你喜欢

热点阅读