sed:全称stream EDit 行文本编辑器
作用:是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在模式空间,接着用 sed命令处理缓冲区中的内容,处理完成后,把模式空间的内容输出到标准输出。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。 Sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等。
sed两种存贮空间
模式空间:为处理文件中一行内容的一个临时缓冲区。处理完一行之后就会把模式空间中的内容打印到标准输出,然后自动清空缓存。
保存空间:sed中的另外一个缓冲区,此缓冲区正如其名,不会自动清空,但也不会主动把此缓冲区中的内容打印到标准输出中。
用法:sed [option] … script inputfil
option:
– n:不输出模式空间内容的自动打印
– e: 多点编辑(用法sed -e script -e script)
– f /PATH/TO/SCRIPT_FILE: 从指定文件中读取编辑脚本
– r: 支持使用扩展正则表达式
-i: 原处编辑(将原文件进行修改),保存原文的办法 -i.bak 会将原文的备份成.bak文件再进行修改
script:
地址命令:
地址定界:
(1) 不给地址:对全文进行处理
(2) 单地址:
n: 指定的行
/pattern/:被此处模式所能够匹配到的每一行
(3) 地址范围:
n,m:n到m行进行处理
n,+m:n到n+m行
/pat1/,/pat2/:从第一次匹配pat1的行到到第一次匹配pat2的行
#,/pat1/
(4) ~:步进
1~2 奇数行
2~2 偶数行
编辑命令:
d:删除模式匹配的行
p:显示模式空间中的内容
a \text:z在文件的后面追加文本,支持\n多行追加
-i \text:在文本的前面追加内容,支持\n多行追加
c \test:将匹配行的内容替换为test
w :保存匹配的行到指定路径
r:读取文件到指定行的行尾
=:为模式匹配的行打印行号
!:匹配模式空间的行取反
sed命令之查找替换
格式:s@查找内容@替换内容@替换标记 或s///或者s###
替换标记:g全局查找并替换
p:结合-n使用,显示打印替换成功的行
w:将替换成功的行保存到文件
sed 命令之高级编辑命令
h:把模式空间的内容覆盖到保存空间
H:把模式空间的内容追加到保存空间
g:把保存空间的内容覆盖到模式空间
G:把保存空间的内容追加到模式空间
x:模式空间和保存空间的内容互换
n: 读取匹配到的行的下一行覆盖至模式空间
N:追加匹配到的行的下一行至模式空间
d: 删除模式空间中的行
D:删除当前模式空间开端至\n的内容(不在传至标准输出),放弃之后的命令,但是对剩余模式空间重新执行sed
sed用法高级编辑举例:
一、只打印偶数行
二、利用sed实现tac命令功能,将文章倒叙打印出来
三、只输出最后两行
四、只打印最后一行
[#52#root@centos6 /testdir]#sed '$!d' f1
五、在每行后面添加空行
六、清空文件内容
七、将每个偶数行打印两次
sed "n;p" 文件名
sed 用法练习:
一、删除/etc/grub2.conf文件中所有以空白开头的行行首的空白字符
二、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
三、在/etc/passwd每一行行首增加#号
四、在/etc/fstab文件中不以#开头的行的行首增加#号
五、保留/etc/fastab文件中包含#号的行,不包含的删除
六、处理/etc/fstab路径,使用 sed命令取出其目录名和基名
七、利用 sed 取出 ifconfig命令中本机的IPv4地址
八、统计centos安装光盘中Package目录下的所有rpm文件的以.分隔倒数第二个字段的重复次数
原创文章,作者:wangnannan,如若转载,请注明出处:http://www.178linux.com/33220
评论列表(1条)
文章内容饱满。图文结合精密,对sed的工作原理可以尝试着通过画图来展示给用户,这样会更直观明了。