sed命令的基本使用方法

1.常见命令选项

 -n 屏蔽默认输出

 -i 直接修改文本内容

 -f 使用sed脚本

 -e 可指定多个处理动作

 -r 启用扩展正则表达式,若与其他选项一起使用,应把r放在最前

 -{} 可组合多个命令,以分号分割

基本的处理动作

p    打印行       4,6p  输出4,5,6行  
 4p,6p  输出4行,6行  
d    删除行    4,6d  删除4,5,6行  
s    字符串替换   s/old/new/  将每行的第一个old替换成new   
s/old/new/3  将每行的第三个old替换成new   
s/old/new/g  将全部的old替换成new   

替换操作的分隔符"/"可以用其他字符代替,如&,#,便于修改文件路径

输出文本  
sed -n 'p' aa.txt   输出书有行,相当于cat aa.txt相同  
sed -n '6p' aa.txt   输出第6行  
sed -n '4,7p' aa.txt   输出4,5,6,7行  
sed -n '4,+5p' aa.txt   输出第4行以及其后的5行  
sed -n '/^root/p' aa.txt   输出以root开头的行  
sed -n 'p,n' aa.txt   输出奇数行,n表示读取下一行文本  
sed -n 'n,p' aa.txt   输出偶数行,n表示读取下一行文本  
sed -n '5,${n,p}' aa.txt   输出从第五行至文件末尾的所有偶数行  
sed -n '$=' aa.txt   输出文件的行数  
删除文本  
sed -n '4,7d' aa.txt   删除4,5,6,7行  
sed -n '/bin/d' aa.txt   删除包含bin的行  
sed -n '/bin/!d' aa.txt   删除不包含bin的行,!表示取反  
sed -n '/^bin/d' aa.txt   删除以bin开头的行  
sed -n '/^$/d' aa.txt   删除所有空行  
sed -n '/^$/{n;/^$/d}' aa.txt   删除重复空行,连续的空行只保留一个  
替换文本  
sed -n 's/aa/AA/' aa.txt   将每行中的第一个aa替换成AA  
sed -n 's/aa/AA/4' aa.txt   将每行中的第4个aa替换成AA  
sed -n 's/aa/AA/g' aa.txt   将文本所有的aa替换成AA  
sed -n 's/aa//g' aa.txt   将文本所有的aa替换成空,相当于删除  
sed -n 's/aa/&s/g' aa.txt   将文本所有的aa替换成aas,&表示查找到的字符  
sed -n '4,6s/^/#/' aa.txt   将文本4,5,6行的开头加上#,相当于注释代码  
sed -n '4,6s/^#//' aa.txt   将文本4,5,6行的开头#号去掉,相当于删除注释  

sed的文本块处理 

操作符   用途   命令示范  
i   行前插入文本   2iAA,在第2行前面插入文本行AA  
2,4iAA,在第2-4行每行前面插入文本行AA  
a   行后插入文本   2aAA,在第2行后面插入文本行AA  
2,4aAA,在第2-4行每行后面插入文本行AA  
c   替换当前行   2cAA,把第二行内容替换成AA  

导入到处操作

操作符   用途   命令示范   解释  
r   读取文本   2r a.txt   在第2行的下面插入a.txt文件  
2,4r a.txt   在第2-4行每行下面插入a.txt文件  
w   保存到文件   2w a.txt   将第2行的内容保存为a.txt文件  
2,4w a.txt   将第2-4行的内容保存为a.txt文件  

sed复制剪切

模式空间

  -存放当前处理的行,将处理的结果输出

  -若当前行不符合处理条件,则原样输出

  -处理完当前行再读入下一行进行处理

保持空间

  -类似于windows的剪切板

  -默认存放一个空行(换行符 \n)

基本动作

  复制

  H:模式空间--->追加--->保持空间

  h:模式空间--->覆盖--->保持空间

  粘贴

  G:保持空间--->追加--->模式空间

  g:保持空间--->覆盖--->模式空间

示范

1)把1-3行复制到文件末尾

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ef88a69303e3145e72fa15d5dada22b6.html