Linux sed

sed

类似于vim就是一个文本编辑器,按行来进行编辑和处理。同时它也可以支持正则表达式。

它的主要作用就是对文本内容进行增删改查。

sed的原理:读取,执行,显示

读取:读取文本内容之后,读取到的内容存放到临时的缓冲区,模式空间。

执行:在模式空间,根据读取的文本内容,按行执行,除非指定行号,否则会遍历所有行。依次执行,从上往下执行。

显示:执行完之后,把执行结果打印,如果要改变生效,模式空间被修改的内容会写入到指定的文件当中。只是操作,但是不最终写入文件,只展示结果,展示完之后,模式空间的数据会立即删除。

相关命令

操作命令

显示内容
sed '内容'  

对多个文件进行操作,只对一个文件操作,可以不加
sed -e "操作" 文件 -e "操作" 文件  对多个文件进行操作

-f 指定脚本文件来处理输入文件的内容。

-i 立即生效  慎用

-n 显示script处理之后的结果

操作符 (只能用单引号引起来)

sed的核心就是增删改,查主要使用grep

s:替换指定字符

d:删除指定的行

a:在当前行的下面插入指定内容

i:增加,再指定行的上面插入指定的内容

c:替换整行

y:替换字符,但替换前后的字符长度必须一致

p:打印

r:扩展正则

行号范围打印

打印1到3行
sed -n '1,3p'  文件 
直接打印最后一行
sed -n '$p' 文件   
打印2行和3行
sed -n '2p;3p' /etc/passwd    
打印偶数行
sed -n 'n;p'  文件  
打印奇数行
sed -n 'p;n'  文件  
打印所有包含o的行 
sed -n '/o/p'  文件  
以bash为结尾
sed -n '/bash$/p' /etc/passwd   
以bash为开头
sed -n '/^bash/p' /etc/passwd  

删除

删除文件内容
sed -i 'd' 文件  

删除第一行和第三行并打印
sed -n '1d;3d;p' 文件  

删除所有包含o的行
sed  -n '/o/d'  文件 

删除所有除了o的行
sed  -n '/o/!d'  文件  

删除空行
sed ‘/^$/d’ 文件  

替换

把root替换为test,+g替换所有
sed -n 's/root/test/gp'  文件    

将root的行注释掉
sed -n 's/^root/#root/1p' /etc/passwd   

将小写变为大写
sed -i 's/[A-Z]/\ l&u'  文件   

l&:转换成小写的特殊符号,在使用时,需要转义符。
u&:转换成大小的特殊符号,在使用时,需要转义符
g :全部替换,如果不加,只会更改首写服务

将内容替换,整行替换
sed -n '/11/c ky30 is great' file.txt  

你可能感兴趣的:(linux,运维,服务器)