sed命令
修改文件內(nèi)容溶诞,對文件行進(jìn)行操作
配置文件,文本文件
語法結(jié)構(gòu)
sed [參數(shù)] ‘條件 指令’ 文件信息
[root@oldboy63-libo oldboy]$ sed -n '/disabled/p' /etc/selinux/config
# disabled - No SELinux policy is loaded.
SELINUX=disabled
sed操作方式
增 | 在文中添加信息 |
---|---|
刪 | 將文件中指定信息刪除 |
改 | 替換修改文件內(nèi)容 |
查 | 查找相應(yīng)內(nèi)容信息 |
查看文件信息
按指定行查詢內(nèi)容
[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
按指定內(nèi)容進(jìn)行過濾
[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
多行添加信息
連續(xù)多行
[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
不連續(xù)多行
[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
直接添加多行內(nèi)容
[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
利用&實現(xiàn)后項應(yīng)用前項正則匹配到的信息
[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獲取文件屬性權(quán)限數(shù)值
[root@oldboy63-libo oldboy]$ stat /etc/hosts|sed -n '4p'|sed -r 's#^A.*\((.*)/-.*$#\1#g'
權(quán)限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)