sed简介
sed(Stream Editor), 流编辑器。对标准输出或文件逐行进行处理。
sed的语法格式
1 | stdout|sed[option] "pattern command" |
sed参数列表
| 选项 | 含义 | 说明 |
|---|---|---|
| -n | quiet/silent | 经过sed处理过的行才会被列出来 |
| -e | script | 直接在命令行进行sed编辑,默认选项 |
| -f | script-file | 直接运行script-file内的sed命令 |
| -r | redxp-extended | 支持扩展正则表达式 |
| -i | 直接编辑源文件 |
sed中的编辑命令
| 类别 | 编辑命令 | 含义 |
|---|---|---|
| 查询 | p | 打印 |
| 增加 | a | 行后追加 |
| 增加 | i | 行前追加 |
| 增加 | r | 将文件内容追加到匹配行后面 |
| 增加 | w | 匹配行写入外部文件 |
| 删除 | d | 删除 |
| 修改 | s/old/new | 将行内第一个old替换为new |
| 修改 | s/old/new/g | 将行内全部的old替换为new |
| 修改 | s/old/new/2g | 将行内前2个old替换为new |
| 修改 | s/old/new/ig | 将行内old全部替换为new, 忽略大小写 |
测试脚本
替换(c)
将第一行替换为shell
1 | sed '1c shell' sed.txt |
将第1-3行替换为java
1 | sed '1,3c java' sed.txt |
嵌入正则表达式, 用 //包住。替换所有包含win的行变为python
1 | sed '/win/c python' sed.txt |
删除(d)
删除第二行
1 | sed '2d' sed.txt |
删除最后一行($表示最后一行)
1 | sed '$d' sed.txt |
删除1-3行
1 | sed '1, 3d' sed.txt |
插入(i)
所有行之前插入#\
1 | sed 'i##' sed.txt |
1-3行之前插入0000
1 | sed '1,3i0000' sed.txt |
替换
替换文本中的每一行的第一个0 为 9
1 | sed 's/0/9/' sed.txt |
替换文本中的所有0 为 9
1 | sed 's/0/9/g' sed.txt |