sed常用用法小结
基础用法
sed 选项 '处理规则' 处理文本
常用选项:
-e:默认:显示原文本和处理后的文本
-n:安静模式,即不显示原文本,只显示处理文本
-i:不显示到屏幕,直接修改原文本
常用动作:
a:在指定行后面追加一行
i:在指定行前面插入一行
c:替换指定行为新行
d:删除指定行
s:替换指定字符,可用正则表达式
p:打印指定行
命令详解
以行为操作单位:sed 选项 'n1[,n2]动作' 文本 (其中n2可用$符表示最后一行)
以关键字为操作单位: sed 选项 '/关键字/动作' 文本
示例:
待处理文本test.txt内容如下:

1.增加append
在第一行后增加一行:
sed '1a append line' test.txt

在第一至二行后增加一行:
sed '1,2a append line' test.txt

在第一至最后一行后增加一行:
sed '1,$a append line' test.txt

注意这里sed处理规则用单引号包裹,可以直接用$符表示最后,若使用双引号包裹,则必须要加反斜杠\转义$符:
sed "1,\$a append line" test.txt
在含有关键字you的所有行之后增加一行:
sed '/you/a append line' test.txt

2.插入insert
在第一行前增加一行:
sed '1i insert line' test.txt

在含有关键字you的所有行之前增加一行:
sed '/you/i insert line' test.txt

3.替换replace
替换第一行为新行:
sed '1c replace line' test.txt

替换所有含有关键字you的行为新行:
sed '/you/c replace line' test.txt

4.删除delete
删除第一行:
sed '1d' test.txt

删除所有含关键字you的行:
sed '/you/d' test.txt

5.正则替换special character replace
将文本中所有的的字符s替换为S:
sed 's/s/S/g' test.txt

将文本中每一行首次匹配到的字符s替换为S:
sed 's/s/S/' test.txt

6.打印print
打印第一行:
sed '1p' test.txt

打印含有关键字you的所有行:
sed '/you/p' test.txt

以上动作都可以在sed命令后加上-i选项,使sed操作对原文本的修改生效(即把输出到屏幕中的内容覆盖原文本内容),虽然操作较为危险,但也是实际工作中最常使用的场景,尤其是动作s,而通常我们需要修改的是文件中的一个或几个特殊的仅有字段,比如配置文件中的参数值等。下面罗列几个注意点:
1.脚本中使用sed命令处理变量时需要使用双引号,因为单引号会防止$符扩展:
sed -i "s/config/${new_config}/g" configfile
2.使用动作s按关键字搜索时发现关键字中包含斜杠/,会与语法结构冲突,可以将语法中的斜杠/替换为其他字符,如@、#、&等(仅限于动作s):
sed -i "s@config@${new_config}@g" configfile
3.使用sed修改软链接文件时需要加--follow-symlinks参数从而不破坏软连接文件类型:
sed -i --follow-symlinks "s/config/${new_config}/g" soft_link_file
sed处理空行
以下都是不对源文件file生效的情形,若想生效,加上-i选项。
1.删除空行
单双引号皆可:
sed '/^$/d' file sed "/^$/d" file
2.将空行替换为指定文本
单双引号皆可:
sed '/^$/c a new line' file sed "/^$/c a new line" file
3.将某一行替换为空行
单引号:
sed '1c \\' file
双引号:
sed "1c \\\\" file sed "1c \\\ " file
4.插入一行空行
以追加方式a为例
单引号:
sed '1a \\' file
双引号:
sed "1a \\\\" file sed "1a \\\ " file
浙公网安备 33010602011771号