Linux sed 详解
1-1)、参数详解
-n : 读取下一行到模式空间,安静的模式
-N : 追加下一行到模式空间
:a : 定义标签a
ba:返回标签a
ta :如果执行成功则返回标签a
Ta:如果执行不成功则返回a
-e : 直接在命令列模式上进行sed的动作操作
-f : 直接将sed的动作写在一个文件内
-i:直接修改读取文件中的内容,而不是输出到终端
p :列印,亦即将某个选择的数据印出
a :新增
c :取代
d :删除
i :插入
s :取代
1-2)、实例详解
准备数据
复制一份passwd数据到桌面
A)、复制数据的前一行
$ nl passwd |sed '1p'
1root:x:0:0:root:/root:/bin/bash
1root:x:0:0:root:/root:/bin/bash
2daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
××××××××××××××××××××××××
B)、删除制定的行
$ nl passwd |sed '1d'
2daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3bin:x:2:2:bin:/bin:/usr/sbin/nologin
4sys:x:3:3:sys:/dev:/usr/sbin/nologin
××××××××××××××××××××××××
C)、显示第一行到第二行
$ nl passwd |sed -n '1,2p'
1root:x:0:0:root:/root:/bin/bash
2daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
只显示第三行
$ nl passwd | sed -n '3p'
3bin:x:2:2:bin:/bin:/usr/sbin/nologin
D)、在第二行后面添加一行信息
$ nl passwd |sed '2a add print .....'
1root:x:0:0:root:/root:/bin/bash
2daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
add print .....
3bin:x:2:2:bin:/bin:/usr/sbin/nologin
E)、删除地2行到第五行,病替换成相对应的字符
$ nl passwd |sed '2,5c add string .....'
1root:x:0:0:root:/root:/bin/bash
add string .....
6games:x:5:60:games:/usr/games:/usr/sbin/nologin
F)、搜索信息做操作
所有出来并显示
$ nl passwd |sed -n '/daemon/p'
2daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
29avahi-autoipd:x:110:115:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false
30usbmux:x:111:46:usbmux daemon,,,:/var/lib/usbmux:/bin/false
搜索出来直接删除
$ nl passwd |sed -n '/daemon/d'
搜索出来病执行替换,q只结束符
$ nl passwd |sed '/daemon/{s/daemon/blueshell/;q}'
1root:x:0:0:root:/root:/bin/bash
2blueshell:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
G)、获取本地的IP
$ ifconfig wlp3s0|sed -n '/netmask/p' | awk -F" " '{print $2}'
192.168.199.137
H)、把文件转换为unix编码
$ sudo sed -n 's/^M//' passwd