sed实战案例

1、把/etc/passwd 复制到/root/test.txt,用sed打印所有行;

sed 'p' test.txt 

2、打印test.txt的3到10行;

sed -n '3,10p' test.txt

3、打印test.txt 中包含’root’的行;

sed -n '/root/ p' test.txt

4、删除test.txt 的15行以及以后所有行;

sed '15,$d' test.txt

5、删除test.txt中包含’bash’的行;

sed '/bash/d' test.txt

6、替换test.txt 中’root’为’toor’;

sed 's/root/toor/'  test.txt

7、替换test.txt中’/sbin/nologin’为’/bin/login’

sed 's#/sbin/nologin#/bin/login/#' test.txt

8、删除test.txt中5到10行中所有的数字;

sed '5,10s/[0-9]//' test.txt

9、删除test.txt 中所有特殊字符(除了数字以及大小写字母);

sed 's/[^(a-z)(A-Z)(0-9)]//g'  test.txt

10、在test.txt 20行到末行最前面加’aaa:’ 在此处的&是将^.*内容进行复制,表示和前面匹配的结果相同

sed '20,$s/^.*$/aaa:&' test.txt       

11、删除centos7系统/etc/grub2.cfg文件中所有以空白开头的行行首的空白字符

sed -r 's/^\s*//'  /etc/grub2.cfg

12、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符

sed -rn 's/^\s+(.*)/\1/p'  /etc/fstab

13、在centos6系统/root/install.log每一行行首增加#号

sed 's/^.*$/&/' root/insall.log

14、在/etc/fstab文件中不以#开头的行的行首增加#号

sed 's/^[^#]/#&/'  /etc/fstab

15、处理/etc/sysconfig/network-scripts/路径,使用grep和sed命令取出其目录名和基名

基名是什么意思?
基名相当于绝对路径中最后一个子目录或文件的名称,

例如:/etc/sysconfig/network 基名就是network;/etc/sysconfig 基名就是 sysconfig
可以使用basename命令取出绝对路径的基名。例如:basename /etc/sysconfig/network

18、打印在west和east之间的模式范围内的所有行

sed -n '/west/,/east/ p' q1

19、把指定的行north写入到一个文件newfile中

sed '/\<north\>/ w newfile/'  q1   \<\>地址定界符

20、只打印找到north的行

sed -n -r '/\<north\>/p' q1

21、在north行后面添加“this is test”

sed '/\<north\>/ a this is test' q1

22、把Jon的名字改成Jonathan.

sed 's/\<Jon\>/Jonathan' w1

23、删除头三行

sed '1,3d' w1

24、显示5-10行

sed -n '5,10p' w1

25、删除包含Lane的行.

sed '/Lane/d' w1

26、显示所有生日在November-December之间的行

sed -n '/November/,/December/p' w1

27、把三个星号(***)添加到以Fred开头的行

sed  -n 's/^Fred.*/***&/p' w1
sed -n '/^Fred/ s/^/***/p' w1

28、用JOSE HAS RETIRED取代包含Jose的行

sed '/Jose/ c this is  test ' w1

29、把Popeye的生日改成11/14/46

sed -n 's#3/19/35#11/14/46#p' w1

30、删除所有空白行

sed 's/[[:space:]]//g' w1

版权声明:本文为m0_53183117原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。