sed 简介
sed 是强大的文本编辑工具。所有的操作都在模式空间进行,且每次只会将一行文本复制到其中等待 sed 命令对其操作。因此,从第二条命令开始,操作的对象都是上一条命令作用后的文本。
命令格式
1 | sed [option] 'COMMANDS' file |
常用的option有
1 | -e 表明后接 sed 命令。命令多于一条时不能省略 |
命令COMMANDS 通常格式为
1 | 'address[,address]cmd[options]' # 三部分组成:地址、命令、具体操作 |
- 地址:右行号、正则表达式给出,用于指定需要操作的行。有些命令只能操作单行,有些可以操作连续多行。地址对所有的命令都是可选项,如果不指定,则作用在所有的行上。
- 命令:有追加(
a)、改变(c)、插入(i)、替换(s)等最常用。 - 选项:格式由前面的命令决定。
替换(s)
options的格式为/pattern/replacement/flags。
pattern与replacement都支持正则表达式。flags选项有n:1~512的整数,表示只替换第n个匹配项。g:替换全部匹配项- 默认替换第一个匹配项
技巧
pattern和replacement中包含Shell变量$var。如果命令用单引号括起来,那么美元符号$分别表示行尾和符号本身。只有用双引号,$var才会被替换为变量值。
1 |
|
替换命令(s)格式中的斜杠/作为定界符,可以换成任何其它符号(好像有一个例外),并且必须出现三次。通常当匹配项或替换项中出现斜杠/时会变更定界符,如#。
1 | 's#pattern#replacement#' |
例子
- 删除空白行
sed -i '/^$/d' input.xxx # -i,修改源文件
- 输出某一行到其他文件
sed -n '3p' input.xxx >> output.xxx


