Linux文本编辑三剑客---sed
sed:编辑器
sed :Stream Editor,行编辑器:
用法:
sed [option]... 'script' inputfile..
选项 | 解释 |
---|---|
-n | 不输出模式中的内容至屏幕 |
-e | 多点编辑,也就是一条命令进行多次的编辑 |
-f /PATH/TO/SCRIPT_FILE | 从指定脚本文件中读取编辑脚本 |
-r | 支持使用扩展正则表达式 |
-i | 原处编辑及修改原文件(原处修改时,不要加编辑命令p) |
示例1:选项-n的作用(-n一般要与p选项连用)
示例2:选项-e的作用
示例3:选项-f的作用
示例4:选项 -i的作用
命令 | 解释 |
---|---|
d | 删除 |
p | 显示模式空间中的内容 |
a \text | 在行后面追加文本;支持使用\n实现多行追加 |
i \text | 在行前面追加文本;支持使用\n实现多行追加 |
c \text | 替换行为单行或多行文本 |
w /path/to/somefile | 保存模式空间匹配到的行至指定文件中 |
r /path/to/somefile | 读取指定文件中的文本流至模式空间中匹配到的行的行后 |
= | 为模式空间中的行打印行号 |
! | 取反条件,放置在编辑命令之前 |
s/// |
替换;支持使用其他分隔符:[email protected]@@,s### 替换标记: g:行内全局替换 p:显示替换成功的行; w /PATH/TO/SOME/FILE:将替换成功的结果保存至指定的文件中 |
示例1:编辑命令 d的作用(删除空白行)
示例2:编辑命令a \text的作用
示例3:编辑命令 i \text的作用
示例4:编辑命令c \text的作用
示例5:编辑命令w /path/to/somefile的作用
示例6:编辑命令r /path/to/somefile的作用
示例7:编辑命令=的作用
示例8:编辑命令!的作用(放置在编辑命令之前)
示例9:编辑命令s///的作用
定界符 | 解释 |
---|---|
无定界符号 | 对全文进行处理 |
a(单地址) | 匹配第a行进行处理 |
a, b | 匹配从第a行到b行进行处理 |
a,+n | 匹配从第a行+n行进行处理 |
/pattern/ | 处理配模式匹配上的每一行 |
a,/pattern/ | 匹配从a行到模式匹配上的行 |
/pat1/,/pat2/ | 匹配从模式pat1到模式part2之间的行 |
~ | 步进 |
示例:定界符号~的作用(分别打印出奇数行以及偶数行)
高级编辑命令 | 解释 |
---|---|
h | 把模式空间中的内容覆盖至保持空间中 |
H | 把模式空间中的内容追加至保持空间中 |
g | 从保持空间中取出数据覆盖至模式空间 |
G | 从保持空间中取出数据追加至模式空间 |
x | 把模式空间中的内容和保持空间中的内容进行互换操作 |
n | 读取匹配到的行的下一行至模式空间 |
N | 追加匹配到的行的下一行至模式空间 |
d | 删除模式空间中的行 |
D | 删除多行模式空间中的所有行 |
高级编辑命令的简单示例:
sed -n 'n;p' sed.sh
作用:匹配偶数行
sed '1!G;h;$!d' sed.sh
作用:逆向显示文件内容
sed '$!N;$!D' sed.sh
作用:显示文件最后两行
sed '$!d' sed.sh
作用:取文件最后一行
sed 'G' sed.sh
作用:在每行后加空白行
sed '/^$/d;G' sed.sh
作用:合并多个空白行,并且在每行后增加一行空白行
sed 'n;d' sed.sh
作用:显示奇数行
sed -n '1!G;h;$p' sed.sh
作用:逆向显示文件内容