sed 用法简单总结

sed是一个行编辑方式,才发现用熟练以后节约了很多时间


注意匹配是'\' 的转意作用

-i 写回源文件

sed -n '2p' tmp  不要单引号其实也可以

sed -n '1,3p' tmp

sed -n '/try/p' tmp         

sed -n '1,$p' tmp

sed '/.*ing/p' tmp                                            

sed '$p' tmp

sed -n 's/am/& hahaha/p' tmp   在这个am这个模式的后面加hahaha  &保存了发现模式 

sed -n 's/am/hahaha &/p' tmp   在这个am这个模式的前面加hahaha     这里的/也可一用:代替

sed -n 's:arm:hahaha &:p' tmp

sed "s/go/$REPLACE/g"    从shell向sed传值用双引号

 sed  '/try/ a\ xxxxxx\n yyyyyy\n zzzzzzz' funtion_use_shell  附加

 sed  '/try/ i\ xxxxxx\n yyyyyy\n zzzzzzz' funtion_use_shell  插入

 sed  '/try/ c\ xxxxxx\n yyyyyy\n zzzzzzz' funtion_use_shell  替代

 

[address[,address]] s/pattern-to-find/replacemen-pattern/[g p w n]

g全部,否则只替换找到的第一个 p打印,这会跳过-n选项 sed默认打印所有 -n关闭打印  w 文件名 将结果写入相应的文件

 

sed '1,3d' tmp                          删除1到3行

sed -n 's/am/& hahaha/pw tmp1' tmp        将结果写入文件

sed  '/am/r tmp1' tmp                  读文件

sed  '/try/q' funtion_use_shell  退出

5. sed里有模式空间(pattern space)和暂存缓冲区两个概念

sed的处理方式记录:

第一,行处理时,sed工作原理(不考虑暂存缓冲区与N、n等命令):

a)      从标准输入或文件中读入一行,存入模式空间(pattern space)中,存的时候不存\n

b)      sed依据命令对其进行处理

c)      将处理完的打印出来,并在末尾加上\n,shell遇到\n就自动换行

第二,使用N的时候情况如下:

a)       从标准输入或文件中读入一行,存入模式空间(pattern space)中,存的时候不存\n

b)       sed依据命令对其进行处理,遇到N命令时,在模式空间的末尾加上\n,然后将下一行读入进来,追加在刚添加的\n后面,此时模式空间的末尾依然没有\n(至始至终就不会有)

c)       将处理完的打印出来,shell遇到\n时候就自动换行,并在末尾加上\n


 

1,sed 如果处理多个sed命令,可以用-e,每个-e对应一个sed命令,第一个不用-e,例如sed -n 's/student/p' -e  '/student/='  local.c

      还有一种方式用";'分号将各个命令隔开如 sed -n 's/student/p;/student/=' local.c,注意虽然前后有两个命令,但是都是对同一个模式       空间进行处理,也就是同一行进行处理

2,  解释sed -n '/student/p' local.c | sed 'N;/\n/:   /g'

     第一个是在关闭自动打印,然后寻找到模式student所在的行,并打印(p)。然后通过管道传递给第二个sed,第二个sed首先用N      命令读取另外一行到模式空间,然后处理,对照sed处理有N的情况下的处理方式理解

x                       x为一行号,如 1

x,y                     表示行号范围从 x到y,如2,5表示从第 2行到第5行

/pattern/               查询包含模式的行。例如 /disk/或/[a-z]/

/pattern/pattern/       查询包含两个模式的行。例如 /disk/disks/

pattern/,x              在给定行号上查询包含模式的行。如 /ribbon/,3

x,/pattern/             通过行号和模式查询匹配行。 3./vdu/

x,y!                    查询不包含指定行号 x和y的行。1,2!

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值