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"
Comments
There are currently no comments
New Comment