# sed
Linux sed 命令是利用脚本来处理、编辑文本文件。
# 命令格式
sed [选项参数] [-e]'[pattern]script' file
# 或
sed [选项参数] -f scriptfile file
# 常用选项
# 直接在命令行以指定的 script 来处理输入的文本文件
-e<script> 或 --expression=<script>
# 以选项中指定的 script 文件来处理输入的文本文件
-f<script文件> 或 --file=<script文件>
# 仅显示 script 处理后的结果
-n 或 --quiet 或 --silent
# 直接修改文件内容
-i
# 支持扩展正则表达式
-r
# 常用操作
# 插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)
i
# 新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
a
# 取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
c
# 取代,可以直接进行取代,通常这个 s 的动作可以搭配正规表示法,例如 1,20s/old/new/g
s
# 删除
d
# 打印,亦即将某个选择的数据印出
p
# 常用匹配
匹配模式 | 说明 |
---|---|
10command | 匹配到第 10 行 |
10,20command | 从第 10 行开始,到底 20 行结束 |
10,+5command | 从第 10 行开始,到第 16 行结束 |
/pattern/ | 匹配到匹配指定规则的行 |
/pattern1/,/pattern2/command | 从匹配 /pattern1/ 的行开始,到匹配 /pattern2/ 行结束 |
10,/pattern/command | 从第 10 行开始,到匹配 /pattern/ 的行结束 |
# 案例
在第 5 行后增加一行内容:
$ cat test.txt
1
2
3
4
5
$ sed "5a6" test.txt
1
2
3
4
5
6
# 其它
由于 Mac 系统与 Linux 系统下 sed
用法的差异,直接在 Mac 下使用可以回报 command a expects \ followed by text
的错误。
可以安装 gnu-sed
命令,使其与 Linux 的一致:
brew install gnu-sed
alias sed=gsed