sed命令示例详解

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

sedstream editor流编辑器的简称,可以用来过滤和转换文本,以下是一些常用示例。假设,我们有文本file.txt内容如下:
sed命令示例详解_第1张图片

  1. 字符替换操作

sed命令示例详解_第2张图片
s表示替换操作,默认情况下,sed只替换每行首次出现的匹配字串,所以在上面的示例中,第一行中的第二个和第三个unix没有被替换。

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

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

sed命令示例详解_第3张图片

3.替换匹配字串
使用*/g*标识
sed命令示例详解_第4张图片

4.替换每一行中第几次开始出现到每一行结束的所有匹配字串
使用/1,/2等以及/g标识,本例中,我们指定替换每一行中从第三次匹配到行尾的所有匹配字串。
sed命令示例详解_第5张图片

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

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

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

sed 's_http://_www_' file.txt

还可以使用竖线分隔符

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

6.使用&符号作为匹配字串
比如,如果我们需要查找某些匹配字串,并且对应匹配的字串前后增加一些其他的字符,这时候,我们就可以使用*&*符号
sed命令示例详解_第6张图片

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

sed命令示例详解_第7张图片

比如,前后两个字符交换位置
sed命令示例详解_第8张图片

或者,交换每一行中前三个字符的顺序:
sed命令示例详解_第9张图片

8.重复打印替换行
你可以使用/p来重复打印替换行,如果某一行存在匹配字串,那么*/p*参数会在终端重复打印替换后的内容,如果当前行不存在匹配字串,没有进行替换操作,那么仅打印一次原来的内容。
sed命令示例详解_第10张图片

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

sed命令示例详解_第11张图片

10.同时执行多个sed命令

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

sed命令示例详解_第12张图片

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

sed命令示例详解_第13张图片

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

只对第三行执行字串替换

sed命令示例详解_第14张图片

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

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

sed命令示例详解_第15张图片

从第二行开始直到文件最后一行
sed命令示例详解_第16张图片

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

sed命令示例详解_第17张图片

14.删除行

可以删除指定行或者多行
sed命令示例详解_第18张图片

15.复制行
使用/p
sed命令示例详解_第19张图片

16.作为grep命令
sed命令示例详解_第20张图片

sed命令示例详解_第21张图片

17.匹配行后添加一行

使用a
sed命令示例详解_第22张图片

  1. 匹配行前添加一行
    使用i
    sed命令示例详解_第23张图片

19.替换某一行

使用c
sed命令示例详解_第24张图片

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

使用/y

sed命令示例详解_第25张图片

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

你可能感兴趣的:(Linux)