【sed】 常用命令

Linux生产环境上,最常用的一套“Sed“技巧
“Sed” 高级功能:我这小脑瓜都快绕晕了

基础 basic

  • 搜索并打印关键词的行
sed -n '/pattern/p'  filename

选项与参数:
-n :只显示匹配处理的行(否则会输出所有)(也就是关闭默认的输出)
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是输出到终端。

  • 删除指定行
//删除第N行:
sed -i 'Nd' filename

//删除第N~M行:
sed -i 'N,Md' filename  #file的[N,M]行都被删除
  • 打印pattern 行的下一行
#匹配出以a开头并以a结尾的后1行:
sed -n '/^a$/,+1p' test.log 

#打印出符合开头是a的记录的下一行
sed -n '/a/ {n;p}' test.log 


https://blog.csdn.net/iteye_12490/article/details/82480019

  • 匹配行上一行
    匹配行前一行
    在这里插入图片描述

1、

sed执行模板=sed ‘模式{命令1;命令2}’
即逐行读入模式空间,执行命令,最后输出打印出来

2、

为方便下面,先说下p和P,p打印当前模式空间内容,追加到默认输出之后,P打印当前模式空间开端至\n的内容,并追加到默认输出之前。
sed并不对每行末尾\n进行处理,但是对N命令追加的行间\n进行处理,因为此时sed将两行看做一行。

2-1、n命令

n命令简单来说就是提前读取下一行,覆盖模型空间前一行(并没有删除,因此依然打印至标准输出),如果命令未执行成功(并非跳过:前端条件不匹配),则放弃之后的任何命令,并对新读取的内容,重头执行sed。

2-2、N命令

N命令简单来说就是追加下一行到模式空间,同时将两行看做一行,但是两行之间依然含有\n换行符,如果命令未执行成功(并非跳过:前端条件不匹配),则放弃之后任何命令,并对新读取的内容,重头执行sed。

2-6、h命令,H命令,g命令,G命令

h命令是将当前模式空间中内容覆盖至保持空间,H命令是将当前模式空间中的内容追加至保持空间
g命令是将当前保持空间中内容覆盖至模式空间,G命令是将当前保持空间中的内容追加至模式空间
2-7、x命令
x命令是将当前保持空间和模式空间内容互换

  • -e 使用多个编辑命令
    在这里插入图片描述

  • 寻址

sed '2s/dog/cat/' filename

sed '2,10s/dog/cat/' filename
sed '2,$s/dog/cat/' filename
sed '2,+10p' filename
sed '1,/pattern/d' filename

sed '/pattern1/,/pattern2/d' filename

在这里插入图片描述

sed -i “/关键词1|关键词2|关键词3/s/^(.*)$/#\1/g” 文件名

这个\1表示前面那个括号里的内容,这条的意思就是把符合关键词的一整行前面加个井号

如果有其他的修改需求,就可以根据行的特点多加几个括号,然后用\1 \2什么的拼接一下。括号和或符号|别忘了加转义


sed命令n,N,d,D,p,P,h,H,g,G,x解析

sed命令在这之上,还缓冲了另外一个东西。那就是“上一行的内容” ,叫做hold space。而当前行,叫做patter space。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值