sed 简易手册

(0 comments)

SED 是一个流线式的非交互式的编辑器,通常配合脚本使用来编辑文本文件。

搜索文本

根据正则表达式条件查找行,并打印符合条件的文本到标准输出。添加'-n'参数时,不再打印编辑后的整个文本。'p'命令表示打印搜索出来的文本。

sed -n '/^west/p' file

替换文本

's'命令表示替换,'g'命令表示替换整行,否则只会替换第一个匹配。

sed 's/west/north/g' file         # 替换文本,并打印整个文本
sed -n 's/^west/north/p' file     # 替换文本,只打印发生替换的行
sed 's/[0-9][0-9]$/&.5/' file     # 搜索以两个数字结尾的行,并在其后添加.5

删除文本

'd'命令表示删除,例如,按照行号删除指定行。

sed '3d' file          # 删除第三行
sed '3,$d' file       # 删除第三行到末行

删除符合正则表达式匹配的行。

sed '/north/d' file    # 删除包含 north 的行
sed '/^#/d' file       # 删除以'#'开头的行

正则表达式

正则表达式规则

规则 表达式 描述
^ /^#/ 匹配以 '#' 开头的行
$ /Love$/ 匹配以 'Love' 结束的行
. /L..e/ 匹配包含 'L' 加任何两个字符和 'e' 的行
[] /[Ll]ove/ 匹配包含 'love' 或者 'Love' 的行
[^] /[^A-KM-Z]ove/ 匹配非 'A'-'K' 和 'M'-'Z' 开头并且后跟 'ove' 的行
* /*love/ 匹配所有一个或多个空格后跟 love 的行
\< /\<Love/ 匹配包含以 Love 结尾的单词的行
\> /Love\>/ 匹配包含以 Love 开头的单词的行

正则表达式的强大在于它能够将多个规则组合,实现复杂的匹配规则。

调用系统变量

只有当SED命令被双引号 ”” 引用时,才会解析系统变量。

sed "s/west/$LOCATE/g"

当替换内容本身包含特殊字符时,通过转义符 '\' 表示。例如,第一个 $VERSION 是文本内容,第二个 $VERSION 是变量。

sed "s/\$VERSION/$VERSION/g"
Currently unrated

Comments

There are currently no comments

New Comment

required

required (not published)

optional

required