Linux sed

简介: Linux sed

1.sed介绍
sed:Stream Editor,流编辑器、行编辑器、逐行编辑

sed将每行内容读入到“内存”中,在内存中进行处理,将结果返回给屏幕,此段内存空间称为模式空间。

sed默认不编辑原文件,仅对模式空间的数据进行处理,处理结束后,将模式空间的内容显示到屏幕

2.sed语法
sed命令的语法格式

sed [option] scripts file1 file2 ...

sed [option] 'AddressCommand' file1 file2 ...

Address:表示对哪些行进行处理

Address表示方法:

1.StartLine,EndLine

  1,100

  1,$

2.LineNumber

   3

 3.StartLine,+n

    5,+2

 4./正则表达式/

    /root/

    /bash$/

  5./REGEX1/,/REGEX2/

    第1次被Regex1匹配的行开始,到第1次被Regex2匹配的行中间的所有行

  6.StartLine,EndLine!

    查询不包括StartLine和EndLine行号的行 

Command:操作命令

Command表示方法:

  d  -->删除符合条件的行

  p  -->显示符合条件的行

  r  -->从另一个文件中读文件

  w  -->将文本写入到一个文件

  y  -->变换字符

  =  -->打印文件行号

  a\  -->在定位行号之后追加文本信息

  i\  -->在定位行号之前插入文本信息

  c\  -->用新文本替换定位文本

  s  -->使用替换模式替换相应模式

option选项:

  -n:不再显示模式空间中的内容(默认显示)

  -i:直接修改原文件

  -e 'AddressCommand' -e 'AddressCommand'   同时执行多个匹配操作

  -f FILE:将多个AddressCommand保存至文件中,每行一个AddressCommand,读取该文件中的操作同时执行多个操作

 -r:表示使用扩展正则表达式

3.样例
3.1.删除符合条件的行
命令:

sed '1,2d' /etc/fstab

[root@rhel77 ~]# cat /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]# sed '1,2d' /etc/fstab

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]#

3.2.删除文件中包含UUID的行
命令:

sed '/UUID/d' /etc/fstab

[root@rhel77 ~]# cat /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]# sed '/UUID/d' /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]#

3.3.删除文件第1行及其后2行
命令:

sed '1,+2d' /etc/fstab

[root@rhel77 ~]# cat /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]# sed '1,+2d' /etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]#

3.4.删除文件第1行和最后1行
命令:

sed '1d;$d' /etc/fstab

[root@rhel77 ~]# cat /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]# sed '1d;$d' /etc/fstab
#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
[root@rhel77 ~]#

3.5.删除文件以#开头的行
命令:

sed '/^#/d' /etc/fstab

[root@rhel77 ~]# cat /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]# sed '/^#/d' /etc/fstab

UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]#

3.6.删除匹配UUID行至最后1行
命令:

sed '/^UUID/,$d' /etc/fstab

[root@rhel77 ~]# cat /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]# sed '/^UUID/,$d' /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
[root@rhel77 ~]#

3.7.打印文件中的第1行和最后1行
命令:

sed -n '1p;$p' /etc/fstab

[root@rhel77 ~]# cat /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]# sed -n '1p;$p' /etc/fstab

/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]#

3.8.在符合条件的文件行后追加新行
命令:

sed '/^#/a # hello world' /etc/fstab

[root@rhel77 ~]# cat /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]# sed '/^#/a # hello world' /etc/fstab

#

hello world

/etc/fstab

hello world

Created by anaconda on Fri Jun 3 09:41:30 2022

hello world

#

hello world

Accessible filesystems, by reference, are maintained under '/dev/disk'

hello world

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

hello world

#

hello world

UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]#

3.9.在符合条件的文件行前追加新行
命令:

sed '1i #hello world' /etc/fstab

[root@rhel77 ~]# cat /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]# sed '1i #hello world' /etc/fstab

hello world

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]#

3.10.替换指定文件行的内容
命令:

sed '$c \End of File' /etc/fstab

[root@rhel77 ~]# cat /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]# sed '$c \End of File' /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
End of File
[root@rhel77 ~]#

3.11.综合案例(编辑网卡配置文件-仅测试)
命令:

cd /etc/sysconfig/network-scripts

sed -e '/^BOOT/c \BOOTPROTO=none' -e '$a \IPADDR=1.1.1.1\nNETMASK=255.255.255.0\nGATEWAY=1.1.1.1' ifcfg-ens33

[root@rhel77 network-scripts]# sed -e '/^BOOT/c \BOOTPROTO=none' -e '$a \IPADDR=1.1.1.1\nNETMASK=255.255.255.0\nGATEWAY=1.1.1.1' ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=a85bdd78-9692-4021-909f-3b6d5c3f2eec
DEVICE=ens33
ONBOOT=yes

IPADDR=192.168.10.110

PREFIX=24

GATEWAY=192.168.10.1

IPV6_PRIVACY=no
IPADDR=1.1.1.1
NETMASK=255.255.255.0
GATEWAY=1.1.1.1
[root@rhel77 network-scripts]#

3.12.替换文件中UUID为uuid
命令:

sed 's/UUID/uuid/g' /etc/fstab

[root@rhel77 ~]# cat /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]# sed 's/UUID/uuid/g' /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
uuid=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
uuid=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
uuid=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
uuid=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]#

3.13.在/etc/fstab查找以UUID开头的行,在其后添加字符串ztj
命令:

sed 's/^UUID/&ztj/g' /etc/fstab

[root@rhel77 ~]# cat /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]# sed 's/^UUID/&ztj/g' /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
UUIDztj=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUIDztj=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUIDztj=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUIDztj=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]#

3.14.在/etc/fstab查找以UUID开头的行,在其行首添加字符串ztj
命令:

sed '/^UUID/s/^/&ztj/' /etc/fstab

[root@rhel77 ~]# cat /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]# sed '/^UUID/s/^/&ztj/' /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
ztjUUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
ztjUUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
ztjUUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
ztjUUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]#

3.15.多个sed命令组合
命令:

sed -e '/^UUID/s/^/&1./;s/0$/&./g' /etc/fstab

[root@rhel77 ~]# cat /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]# sed -e '/^UUID/s/^/&1./;s/0$/&./g' /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
1.UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0.
1.UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0.
1.UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0.
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0.
1.UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0.
/dev/cdrom /mnt iso9660 defaults 0 0.
/dev/data_vg/data_lv /mbox xfs defaults 0 0.
[root@rhel77 ~]#

3.16.sed读取系统变量,变量替换
命令:

variable=ztj

sed "s/UUID/$variable/g" /etc/fstab

[root@rhel77 ~]# variable=ztj
[root@rhel77 ~]# sed "s/UUID/$variable/g" /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
ztj=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
ztj=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
ztj=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
ztj=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]#

3.17.修改文件中不包含UUID的行,然后将其行uuid值改成ztj
命令:

sed '/UUID/!s/ztj/uuid/g' fstab

[root@rhel77 ~]# cat fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
ztj=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
ztj=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
ztj=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
ztj=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]# sed '/UUID/!s/ztj/uuid/g' fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
uuid=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
uuid=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
uuid=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
uuid=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]#

3.18.修改文件中包含ztj的行,然后将其行ztj值改成uuid
命令:

sed '/ztj/s/ztj/uuid/gi' fstab

g:替换每一行所有的字符

i:忽略大小写

[root@rhel77 ~]# cat fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
ztj=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
ztj=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
ztj=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
ztj=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]# sed '/ztj/s/ztj/uuid/gi' fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
uuid=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
uuid=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
uuid=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
uuid=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]#

3.19.合并文件上下两行
命令:

sed 'N;s/\n/ /' fatab

[root@rhel77 ~]# sed 'N;s/\n/ /' fstab
#

/etc/fstab # Created by anaconda on Fri Jun 3 09:41:30 2022

# Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

ztj=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0 ztj=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
ztj=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0 /dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
ztj=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0 /dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]#
3.20.统计文件行数
命令:

sed -n '$=' /etc/fstab

[root@rhel77 ~]# sed -n '$=' /etc/fstab
15
[root@rhel77 ~]#
3.21.将指定文件的内容添加到符合条件的行的后面
命令:

sed '2r /etc/hosts' /etc/fstab

在/etc/fstab文件的第2行后追加/etc/hosts文件的内容

[root@rhel77 ~]# sed '2r /etc/hosts' /etc/fstab

#
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.110 rhel77.boc.com rhel77

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]#

3.22.将符合条件的内容另存到指定文件中
命令:

sed '/^UUID/w /tmp/ztj.txt' /etc/fstab

cat /tmp/ztj.txt

将/etc/fstab文件以UUID开头的行另存到/tmp/ztj.txt文件中

[root@rhel77 ~]# sed '/^UUID/w /tmp/ztj.txt' /etc/fstab

#

/etc/fstab

Created by anaconda on Fri Jun 3 09:41:30 2022

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
/dev/mapper/rhel_rhel77-var /var xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
/dev/data_vg/data_lv /mbox xfs defaults 0 0
[root@rhel77 ~]# cat /tmp/ztj.txt
UUID=c0d6afed-f0cd-4575-9c5d-ce302451860b / xfs defaults 0 0
UUID=bfca56f5-9ad7-4439-8bcb-39663a13ed57 /boot xfs defaults 0 0
UUID=bd04b731-2fd8-4c92-8620-6981f9d82be0 /home xfs defaults 0 0
UUID=3c784a4d-e8f2-46a5-a0af-d6d21e0410a5 swap swap defaults 0 0
[root@rhel77 ~]#
————————————————

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

原文链接:https://blog.csdn.net/z19861216/article/details/132490805

目录
相关文章
|
6月前
|
Linux Perl
一个神奇的Linux命令-sed
一个神奇的Linux命令-sed
27 1
|
6月前
|
存储 监控 Linux
性能工具之linux三剑客awk、grep、sed详解
Linux 三剑客 awk,sed和grep 在性能领域广泛用于性能建模、性能监控及性能分析等方面,也是各大互联网公司测试岗高频面试题,中高端测试人员必备技能之一。
154 1
性能工具之linux三剑客awk、grep、sed详解
|
3月前
|
Linux Perl
在Linux中,如何使用请用 cut 或者 awk,sed命令取出 linux 中 eth0 的 IP 地址?
在Linux中,如何使用请用 cut 或者 awk,sed命令取出 linux 中 eth0 的 IP 地址?
|
2月前
|
机器学习/深度学习 Linux Perl
Linux文本处理三剑客之sed详解
这篇博客详细讲解了Linux中的文本处理工具sed的使用方法和常用命令。
160 9
Linux文本处理三剑客之sed详解
|
2月前
|
Linux Perl
Linux之sed命令
Linux之sed命令
|
2月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
388 2
|
2月前
|
Linux Perl
6-20|linux sed命令
6-20|linux sed命令
|
3月前
|
Linux Shell Perl
在Linux中,如何使用sed命令进行文本替换?
在Linux中,如何使用sed命令进行文本替换?
|
3月前
|
数据挖掘 Linux Perl
在Linux中,awk和sed命令的作用?
在Linux中,awk和sed命令的作用?
|
3月前
|
Linux BI 数据处理
在Linux中,如何使用awk和sed进行文本处理?
在Linux中,如何使用awk和sed进行文本处理?