sed使用小结

背景:突然想到Linux那本书还有个尾巴没结。唉,自己都不知道怎么想起来的,这两天就先把剩下的一百来页看完吧。
相关sed的一些基本使用做了一个小记,写出来加深一下印象。

一、 sed 替换

s/pattern/replacement/flags

flags 有以下四种取值:
①数字,表示 replacement 将替换 第几处 pattern
②g, 表示 replacement 将会替换所有匹配到的文本 pattern
③p, 表示 原先行的内容要打印出来
sed -n ‘s/test1/test2/p’ test.txt, -n 会禁止sed输出,但是后面的 p 则会输出修改过的行。最终的效果就是只输出被替换命令修改过的行。
④w file,将替换的结果写到文件中 w 后面直接空格然后跟上 要写入的文件名即可。

需要注意的是有的时候被替换的又可能是 带有斜杠 ‘/’ 的路径名,这样的话,我们通常需要使用反斜杠 ‘\’ 来转义。

比如: sed ‘s/\/bin\/bash/\/bin\/csh/’ /etc/passwd
这个写可能有的人觉得开心,但是有一种更开心的写法,
sed ‘s!/bin/bash!/bin/csh!’ /etc/passwd 其中的叹号可以被替换成其他字符,因为sed 编辑器支持选择其他字符作为替换命令的字符串分隔符。

按行匹配

比如 :sed ‘2s/test1/test2/’ test.txt 会替换掉test.txt第二行中的test1
sed ‘2,4s/test1/test2/’ test.txt’ 替换掉 2到4行的test1
sed ‘2,$s/test1/test2/’ test.txt’ 替换掉 2行以后的test1

文本匹配

和按行匹配类似

命令组合

比如: sed ‘2{
s/test1/test2/
s/tt1/tt2/
}’ test.txt
意思就是 替换第二行 中的 test1 为test2 tt1 为tt2 ,和前面的只不过多写了一点,没什么大区别。

二、 sed 删除

删除命令在匹配方面和替换类似,不过这是删除,所以是下面这样,
sed ‘d’ test.txt
sed ‘2d’ test.txt 还有其他的匹配参照 替换 即可明白。

三、插入和附加

这一对小兄弟,insert 命令 i 在指定的行前添加
append 命令 a 在指定的行后添加
比如:echo Test Line 2’ | sed ‘i\Test Line 1’
会输出: Test Line 1
Test Line 2
另外,附加到最后一行,可以使用 a$ ,插入多行,行与行之间使用反斜杠隔开。

四、修改

change 命令 c ,修改一行,只会修改一行。不信可以试试。我是老实人,只会说大实话。?

五、转换

transform 命令 y ,这个是唯一一个可以处理单个字符的命令
[address]y/inserts/outchars/ ,它会进行一一匹配,举个例子
sed ‘y/123/456’ test.txt 结果就是1 对应着4 ,2对应着5,3对应着6,这个命令我觉得有个弊端,就是它是全局命令,我们无法限制它之替换特定位置的字符。

六、 对文件操作

写入文件

[address]w filename
sed ‘1,3w test.txt’ test2.txt

读取文件

[address]r filename
sed ‘3r test.txt’ test2.txt
注意:读取文件如果使用 地址区间 那么只能使用单独一个行号或者文本模式。写入文件就比较灵活了。

好了,最后来一张美图。在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值