Linux文本编辑三剑客---sed

sed:编辑器

        sed :Stream Editor,行编辑器:

用法:

        sed [option]...  'script' inputfile..

常用选项
选项 解释
-n 不输出模式中的内容至屏幕
-e 多点编辑,也就是一条命令进行多次的编辑
-f /PATH/TO/SCRIPT_FILE 从指定脚本文件中读取编辑脚本
-r 支持使用扩展正则表达式
-i 原处编辑及修改原文件(原处修改时,不要加编辑命令p)

 

 

 

 

 

 

 

示例1:选项-n的作用(-n一般要与p选项连用)

Linux文本编辑三剑客---sed

示例2:选项-e的作用
Linux文本编辑三剑客---sed

示例3:选项-f的作用

Linux文本编辑三剑客---sed

示例4:选项 -i的作用

Linux文本编辑三剑客---sed

编辑命令
命令 解释
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的作用(删除空白行)

Linux文本编辑三剑客---sed

示例2:编辑命令a \text的作用

Linux文本编辑三剑客---sed

示例3:编辑命令 i \text的作用

Linux文本编辑三剑客---sed

示例4:编辑命令c \text的作用

Linux文本编辑三剑客---sed

示例5:编辑命令w /path/to/somefile的作用

Linux文本编辑三剑客---sed

示例6:编辑命令r /path/to/somefile的作用

Linux文本编辑三剑客---sed

示例7:编辑命令=的作用

Linux文本编辑三剑客---sed

示例8:编辑命令!的作用(放置在编辑命令之前)

Linux文本编辑三剑客---sed

示例9:编辑命令s///的作用

Linux文本编辑三剑客---sed

地址定界
定界符 解释
无定界符号 对全文进行处理
a(单地址) 匹配第a行进行处理
a, b 匹配从第a行到b行进行处理
a,+n 匹配从第a行+n行进行处理
/pattern/ 处理配模式匹配上的每一行
a,/pattern/ 匹配从a行到模式匹配上的行
/pat1/,/pat2/ 匹配从模式pat1到模式part2之间的行
~ 步进

 

 

 

 

 

 

 

 

 

 

示例:定界符号~的作用(分别打印出奇数行以及偶数行)

Linux文本编辑三剑客---sed

高级编辑命令
高级编辑命令 解释
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

作用:逆向显示文件内容