sed使用详解
格式:sed [OPTION] [‘commands’] file
1、OPTION
- -e:输入行多条命令时使用,多项编辑
- -i:在原文件修改
- -n:按匹配条件输出
- -f:指定文件(sed脚本)
- -r:支持使用拓展正则表达式
2、地址定界
- 不给地址,全文处理
- 单地址
x:指定行号
/pattern/:正则表达式匹配到的行 - 步进:~
1~2:显示所有奇数行
2~2:显示所有偶数行 - 地址范围
x,y:x到y行
x,+x:x到x+1行
/pat1/,/pat2/:从pat1匹配的行到pat2匹配的行
x,/pattern/:从x行到正则匹配的行
x,y!:不包含x到y行
3、编辑命令
(1)、普通编辑命令
- a \content:在行后面追加文本,可使用\n实现多行追加
- i \content:在行前面追加文本,可使用\n实现多行追加
- c \content:替换匹配到的行为content内容,可使用\n实现多行
- d:删除匹配到的行
- p:显示模式空间的内容
- =:为模式空间中的行打印行号
- !:取反条件
- w /path/file:保存模式空间匹配到的行到指定文件中
- r /path/file:从另一个文件中读取输入行文本流至每一行行后
- s:替换 分隔符支持 s/// s@@@ s###
替换标记:
g:全局替换
p:显示替换成功的行
w /path/file:将替换后的结果保存到文件中
(2)、高级编辑命令
- h:把模式空间中的内容覆盖至暂存缓冲区中
- H:把模式空间中的内容追加至暂存缓冲区中
- g:把暂存缓冲区中的内容覆盖至模式空间中
- G:把暂存缓冲区中的内容追加至模式空间中
- x:交换模式空间和暂存缓冲区的内容
- n:读取匹配到的行的下一行至模式空间
- N:追加匹配到的行的下一行至模式空间
- d:删除模式空间中的行
- D:删除多行模式空间中的所有行
eg:
sed -n ‘n;p’ FILE:显示偶数行
sed ‘1!G;h;$!d’ FILE:逆向显示文件内容
sed ‘$!N;$!D’ FILE:取出文件后两行
sed ‘$!d’ FILE:取出文件最后一行
sed ‘G’ FILE:每一行后面都追加空白行
sed ‘/^$/d;G’ FILE:将多个空白行合并为一个
sed ‘n;d’ FILE:显示奇数行
sed -n ‘1!G;h;$p’ FILE:逆向显示文件中的每一行
sed -E ‘:a;s@([[:digit:]])([[:digit:]]{3})>@\1,\2@;ta’
:a 和ta 是一对符号,:a是先做一个标记,然后如果ta之前执行成功,则跳转到:a标识符继续执行,达到了循环的效果。