语法:
sed [选项] '模式动作' 文件...
一、常用参数
参数 | 描述 |
-i | 直接操作文件 |
-e | 将脚本添加到要执行的命令中 |
-f | 将脚本文件的内容添加到要执行的命令中 |
-r | 在脚本中使用扩展正则表达式。 |
二、常规用法示例
#将文件a.txt中字符a替换为字符b
sed -i "s#a#b#g" a.txt
#将文件a.txt中字符a替换为字符b 并且 字符c替换为字符d
sed -i "s#a#b#g;s#c#d#g" a.txt
#删除文件a.txt中abcd所在行
sed -i "d#abcd#" a.txt
#删除文件a.txt中abcd字符(借助替换即可)
sed -i "s#abcd##g" a.txt
#删除文件a.txt中第3行
sed -i "5d" a.txt
#删除文件a.txt中第3~5行
sed -i "3,5d" a.txt
三、高级用法
符号 | 解释与用法 |
---|---|
. | 匹配除换行符外任意一个字符 |
* | "*"表示前边字符有0个或多个 |
[] | [a-z]:表示a-z字符中的一个,也就是小写字母。 [0-9]:表示0-9字符中的一个,也就是表示数字。 [A-Z]:表示大写字母。 [a-zA-Z]:表示字符集为小写字母或者大写字母。 [a-zA-Z0-9]:表示普通字符,包括大小写字母和数字。 [abc]:表示字符a或者字符b或者字符c。 [^0-9]:表示非数字类型的字符,^表示取反意思,只能放在中括号的开始处才有意义。 [-cz]:表示字符-或者字符c或者字符z,注意与[c-z]的区别,因为-符号没有放在e和f之间。 |
^ | "^"表示行首 |
$ | "$"表示行尾 |
\ | "\"表示是转义字符 |
{} | "{}"表示前边字符的数量范围 |
? | "?"表示前置字符有0个或1个 |
+ | "+"表示前置字符有1个或多个 |
| | "|"表示指明两项之间的一个选择 |
() | "()"表达式分组 |
示例:
#将文件a.txt中以字符a开头的行内容替换为bbb
sed -i "s#^a#bbb#g" a.txt