sed命令

格式:

sed [options] 'AddressCommand' file ....

sed [options] -f scriptfile file

options:

 -n:静默模式,不显示模式空间中的内容

 -i:直接修改原文件

Address:

1、StartLine,EndLine

         比如1-100行, 1,100

2、/RegExp/ 

         /^root/

3、/pattern1/,/pattern2/

        这个文件中第一次被pattern1匹配到的行至第一次被pattern2匹配到的行之间的所有行

4、LineNumber

        指定某行 如:5; 最后一行使用$表示

5、StartLine, +N 

         从startline开始,向后的N行。 一共显示N+1行

Command:
p:显示匹配的行

# 显示/etc/fstab中包含oot字符的行   
# sed -n  '/oot/p' /etc/fstab  
[root@ha1 ~]# sed -n  '/oot/p' /etc/fstab  
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1 UUID=a3fc8beb-5a27-4683-a13b-29f38fff4a4d 
/boot                   ext4    defaults        1 2

d:删除匹配的行

#删除最后一行(如要修改原文件加option -i) 
#sed '$d' /etc/fstab  
[root@ha1 ~]# tail -2 /etc/fstab  
sysfs                   /sys                    sysfs   defaults        0 0 
proc                    /proc                   proc    defaults        0 0 
[root@ha1 ~]# sed  '$d' /etc/fstab  
#删除后最后一行为sysfs内容 
[root@ha1 ~]# tail -1 /etc/fstab 
sysfs                   /sys                    sysfs   defaults        0 0

a \string : 在指定行后追加一行

#在fstab文件内包含root的行之后追加行内容为  hello,zrer 
[root@ha1 ~]# sed '/root/a \hello,zrer' /etc/fstab 
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1 
hello,zrer 
#追加两行使用换行符\n 
[root@ha1 ~]# sed '/root/a \hello,zrer\nhello,two!' /etc/fstab 
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1 
hello,zrer 
hello,two!

 

i \string :在指定行之前追加一行

r file :将指定文件内容加入到指定行处

#将r.txt文件内容添加到当前最后一行之后
[root@ha1 ~]# sed '$r /root/r.txt' /etc/fstab
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
UUID=a3fc8beb-5a27-4683-a13b-29f38fff4a4d /boot                   ext4    defaults        1 2
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
r file !

w file:将指定的行另存至指定的文件

#将/etc/fstab文件中的最后一行另存至/root/lastline.txt文件内
[root@ha1 ~]# sed -n  '$w /root/lastline.txt' /etc/fstab
[root@ha1 ~]# cat lastline.txt 
proc                    /proc                   proc    defaults        0 0

s /pattern/string/修饰符:查找并替换,默认只替换被模式第一次匹配到的字符串

    格式:s /// s ### 

    常用修饰符:

    g:全局替换

    i:忽略大小写

#将/etc/fstab文件内的"/"替换为"$",元字符使用\转义
[root@ha1 ~]# sed 's/\//\$/g' /etc/fstab
$dev$mapper$VolGroup-lv_root $                       ext4    defaults        1 1
UUID=a3fc8beb-5a27-4683-a13b-29f38fff4a4d $boot                   ext4    defaults        1 2
$dev$mapper$VolGroup-lv_swap swap                    swap    defaults        0 0
tmpfs                   $dev$shm                tmpfs   defaults        0 0
devpts                  $dev$pts                devpts  gid=5,mode=620  0 0
sysfs                   $sys                    sysfs   defaults        0 0
proc                    $proc                   proc    defaults        0 0


你可能感兴趣的:(命令,sed)