提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
一、sed工具的概述
sed是一种流编辑器流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流
sed编辑器可以根据命令来处理数据流中的数据 这些命令要么从命令行中输入要么存储在一个
命令文本文件中
二、sed工作流程
sed的工作流程主要就是读取 执行 显示 三种
读取:sed从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space )。
执行:默认情况下,所有的sed 命令都在模式空间中顺序地执行, 除非指定了行的地址,否则sed命令将会在所有的行上依次执行
显示:发送修改后的内容到输出流(屏幕)。在发送数据后,模式空间将会被清空。在所有的文件内容都被处理完成之前,上.述过程将重复执行,直至所有内容被处理完。
三、sed的命令格式
1.常用选项
-h 或- -help∶显示帮助。
-r:使用扩展正则表达式
-i∶ 备份文件文件并原处编辑
-e 或 - -expression=∶ 多点编辑
-f 或- -file=∶表示用指定的脚本文件来处理输入的文本文件。
-n∶ 不输出模式空间内容到屏幕,即不自动打印,加p,又恢复自动打印
2.常用操作
s∶替换,替换指定字符。
d∶删除,删除选定的行。
c∶ 替换,将选定行替换为指定内容。
a∶ 增加,在当前行下面增加一行指定内容。
i∶ 插入,在选定行上面插入一行指定内容。
Y∶ 字符转换,转换前后的字符长度必须相同。
p∶ 打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容; 如果有非打印字符,则以 AscII码输出。其通常与_n"选项一起使用。
=∶打印行号。
l(小写L)∶打印数据流中的文本和不可打印的ASCII字符(比如结束符s、制表符\t)
四、sed命令的使用
1.打印内容
打印全部内容
sed ‘ ’交互模式输入一行,自动打印一行相同的
sed -n ‘ ’ 交互模式输入一行,关闭自动打印
sed -n ‘ p’加上p又恢复自动打印
[root@yxp opt]#sed ' '
11
11
22
22
33
33
44
44
[root@yxp opt]#sed -n ' '
11
22
33
[root@yxp opt]#sed -n ' p'
11
11
22
22
33
33
查看文件,打印全部内容
#法一:
[root@yxp opt]#sed ' ' /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sat Sep 4 02:48:23 2021
#
# 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/centos-root / xfs defaults 0 0
UUID=183ca7c7-1989-4f43-9e81-d2676192f5a4 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/sdb1 /mnt xfs defaults 0 0
#法二
[root@yxp opt]#sed -n ' p' /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sat Sep 4 02:48:23 2021
#
# 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/centos-root / xfs defaults 0 0
UUID=183ca7c7-1989-4f43-9e81-d2676192f5a4 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/sdb1 /mnt xfs defaults 0 0
打印指定行内容
##例如:打印第四行内容
[root@yxp opt]#sed -n ' 4p' /etc/fstab
# Created by anaconda on Sat Sep 4 02:48:23 2021
[root@yxp opt]#ifconfig ens33|sed -n '2p'
inet 192.168.59.102 netmask 255.255.255.0 broadcast 192.168.59.255
根据地址,打印指定多行内容
#打印2-4行
[root@yxp opt]#ifconfig ens33|sed -n '2,4p'
inet 192.168.59.102 netmask 255.255.255.0 broadcast 192.168.59.255
inet6 fe80::ecee:9f8a:52de:5871 prefixlen 64 scopeid 0x20<link>
ether 00:0