sed命令示例详解

版权声明:自由转载,请附链接 https://blog.csdn.net/kangkanglou/article/details/83445309

sed [OPTION]… {script-only-if-no-other-script} [input-file]…

sedstream editor流编辑器的简称,可以用来过滤和转换文本,以下是一些常用示例。假设,我们有文本file.txt内容如下:
在这里插入图片描述

  1. 字符替换操作

在这里插入图片描述
s表示替换操作,默认情况下,sed只替换每行首次出现的匹配字串,所以在上面的示例中,第一行中的第二个和第三个unix没有被替换。

2.替换某一行中第几次出现的字串

使用/1,/2等标识,指定替换某一行中第几次出现的匹配字串,比如,本示例中使用/2,表示替换每一行中第二次匹配的字串。

在这里插入图片描述

3.替换匹配字串
使用*/g*标识
在这里插入图片描述

4.替换每一行中第几次开始出现到每一行结束的所有匹配字串
使用/1,/2等以及/g标识,本例中,我们指定替换每一行中从第三次匹配到行尾的所有匹配字串。
在这里插入图片描述

5.使用其他分隔符
默认情况下,我们使用反斜杠*/*作为分隔符,比如替换url地址中的协议头:

sed 's/http:\/\//www/' file.txt

这种情况下,字串包含了我们的分隔符,如果要正确的使用sed命令,我们需要对字串中的分隔符关键字进行转义,这样做的话,代码既不美观而且可读性也比较差,因此,我们可以通过修改分隔符的方式实现。
比如使用下划线

sed 's_http://_www_' file.txt

还可以使用竖线分隔符

sed 's|http://|www|' file.txt

6.使用&符号作为匹配字串
比如,如果我们需要查找某些匹配字串,并且对应匹配的字串前后增加一些其他的字符,这时候,我们就可以使用*&*符号
在这里插入图片描述

7.使用\1,\2等标识
模式中,第一对括号用\1表示,以此类推,比如,你想替换某个字串两次,那么可以使用如下方式:

在这里插入图片描述

比如,前后两个字符交换位置
在这里插入图片描述

或者,交换每一行中前三个字符的顺序:
在这里插入图片描述

8.重复打印替换行
你可以使用/p来重复打印替换行,如果某一行存在匹配字串,那么*/p*参数会在终端重复打印替换后的内容,如果当前行不存在匹配字串,没有进行替换操作,那么仅打印一次原来的内容。
在这里插入图片描述

9.只打印替换后的内容
使用*-n*参数,接例8,如果我们只想打印显示替换后的内容,那么我们可以通过指定**-n**参数来实现。

在这里插入图片描述

10.同时执行多个sed命令

方式一,前者的输出作为后者的输入。

在这里插入图片描述

方式二,使用**-e**参数

在这里插入图片描述

11.对指定行进行字串替换

只对第三行执行字串替换

在这里插入图片描述

12.只对特定范围的字串进行替换

只对第一到第三行的内容执行字符替换操作

在这里插入图片描述

从第二行开始直到文件最后一行
在这里插入图片描述

13.匹配行上进行替换
首先指定一个匹配模式,如果当前行存在匹配字串,则将当前行中的A替换为B,下图示例中,如果当前行中存在linux字串,则将该行中的unix替换为centos

在这里插入图片描述

14.删除行

可以删除指定行或者多行
在这里插入图片描述

15.复制行
使用/p
在这里插入图片描述

16.作为grep命令
在这里插入图片描述

在这里插入图片描述

17.匹配行后添加一行

使用a
在这里插入图片描述

  1. 匹配行前添加一行
    使用i
    在这里插入图片描述

19.替换某一行

使用c
在这里插入图片描述

20.字符转换操作,类似tr操作

使用/y

在这里插入图片描述

https://www.folkstalk.com/2012/01/sed-command-in-unix-examples.html

猜你喜欢

转载自blog.csdn.net/kangkanglou/article/details/83445309