sed是什么
sed是stream editor的简称,也就是流编辑器。它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,不断重复,直到文件末尾。文件内容不会改变,除非使用重定向输出。
使用方法
sed [option] 'command' filename
常用option:
-n 或–quiet或–silent 仅显示script处理后的结果.
-e 或–expression 以选项中指定的script来处理输入的文本文件。
-f 或–file 以选项中指定的script文件来处理输入的文本文件。
-r 让sed命令支持扩展的正则表达式(默认是基础正则表达式)。
动作说明:
a: 新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)。
c: 取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行。
d: 删除
i: 插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)。
p: 打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行
s: 取代,可以直接进行取代的工作。通常这个 s 的动作可以搭配正则表达式
常用命令
插入
# 在第一行前添加字符串 sed '1i\添加的内容' file # 在最后一行行前添加字符串 sed '$i\添加的内容' file # 在最后一行行后添加字符串 sed '$a\添加的内容' file
替换
# 注释掉含有“swap”的行 sed -i 's/^[^#].*swap*/#&/g' fstab # 取消含有字符串swap的行最前面的注释符号# ## //两杠表示空格,以空格替换#,等价取消#。 sed -i '/^#.*swap/s/^#//g' fstab
删除
# 删除第2行 sed '2d' filename # 删除1-4行 sed '1,4d' filename # 删除1行和后2行,共3行 sed '1,+2d' filename # 删除匹配到Coder的行和其后面的2行 sed '/Coder/,+2d' filename # 删除奇数行 sed '1~2d' filename # 删除偶数行 sed '2~2d' filename # 删除匹配Coder的行 sed '/Coder/d' filename # 删除所有空行 sed '/^$/d' filename