sed相关命令即功能

sed 是一种在线的、非交互式的编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓
冲区中,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾,文件内容并没有改变,除非使用重定向存储输出,或者使用-i选项(inplace,就地编辑,真实的对文本内容进行修改),sed在文件中查找模式时也可以使用正则表达式和各种元字符,使用扩展元字符的选项为-r
-n取消默认输出,一般只有使用命令p时才使用,否则缓存经过处理后将不能输出

sed -n ‘/root/p’ passwd 取消默认输出,在passwd文件中查找带有root的行并输出,结果有一行

sed ‘/root/p’ passwd 在passwd文件中查找带有root的行并输出,结果有两行

sed -r ‘3,$d’ /tmp/passwd
删除第三行到结尾,具体过程:将文件中的第一行读入模式空间,执行默认输出操作,输入到屏幕。将文件的第二行读入模式空间,执行默认输出操作到屏幕。将文件的第三行读入模式空间,进行d即删除操作,以此类推到最后一行,输出结果为/tmp/passwd文件的前三行

sed -r ‘$d’ /tmp/passwd 将最后一行删除

sed -r ‘/root/d’ /tmp/passwd 匹配有root的行,执行删除操作

sed -r ‘1,/root/{/root/d}’ /tmp/passwd 删除范围内第一个模式匹配的行
具体命令及功能
p 打印行
d 删除行
a 在当前行的下一行添加一行或多行
i 在当前行的上一行插入文本
c 用新文本修改当前行中的文本(即覆盖掉当前行)
= 显示行号;在做行处理之前先打印行号
l 列出非打印字符
n 对找到匹配的行的下一行进行处理(最好是匹配唯一行)
q 结束或退出sed
! 对所选行以外的所有行应用命令
s 用一个字符串替换另一个,s 替换标志,g 在行内进行全局替换,i忽略大小写,s/ / /gi
r 从文件中读
w 将行写入文件

这里写图片描述
h 把模式空间里的内容复制到暂存缓冲区(以覆盖的方式),暂时缓存区没有存入东西时默认只有一行回车。
H 把模式空间里的内容复制到暂存缓冲区(以追加的方式)
g 取出暂存缓冲区的内容,将其复制到模式空间,覆盖该处原有内容
G 取出暂存缓冲区的内容,将其复制到模式空间,追加该处原有内容
x 交换暂存缓冲区与模式空间的内容
测试文件:
cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.70.134 aa

sed -r ‘1h;$G’ /etc/hosts
将模式空间的第一行以覆盖的方式写到暂存缓存区然后输出到屏幕,将第二行输出到屏幕,以此类推,当到最后一行时,将暂存缓存区的内容(此时只有被放进去的第一行)以追加的方式放入到模式空间中最后一行的后面,一起输出。
结果为
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.70.134 aa
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

sed -r ‘1{h;d}; $G’ /etc/hosts 读入第一行,在模式空间里以覆盖的方式放入到暂存缓存,然后删除模式空间里的第一行,接着继续其他行的输出操作,直到最后一行,将暂存缓存里的内容追加到模式空间末行的后面并输出。
结果为
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.70.134 aa
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

sed -r ‘1h; 2,$g’ /etc/hosts
读入第一行,在模式空间里以覆盖的方式放入到暂存缓存,读入第二行放入模式空间,将暂存缓存的内容(即第一行)以覆盖的方式覆盖掉模式空间里的内容(即第二行)并输出,进行这样的操作直到最后一行。
结果为
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

sed -r ‘1h; 2,3H; $G’ /etc/hosts
结果为
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.70.134 aa
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.70.134 aa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值