Linux常用命令之sed命令

-----------sed命令-----------
说明:
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作。

sed命令行格式为:

sed [-nefri] ‘command’ 输入文本  
常用选项:
-n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。
但如果加上-n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e∶直接在指令列模式上进行 sed 的动作编辑; 目的是可以使用多个表达式。
-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
-r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
-i∶直接修改读取的档案内容,而不是由萤幕输出。
常用命令:
a  ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c  ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d  ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i  ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p  ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
s  ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!
	例如 1,20s/old/new/g 就是啦!

例:

sed '1p' -n 1.txt         
#显示第一行内容。

grep -n '.*' 1.txt |sed '1p' -n    
#显示第一行并显示行号。

grep -n '.*' 1.txt |sed '1,5p' -n  
#显示1到5行并显示行号。

grep -n '.*' 1.txt |sed '5,$p' -n   
#显示第5行到最后一行并显示行号。

grep -n '.*' 1.txt |sed '/root/p' -n 
#显示包含root的行。关键字用//包起来。

grep -n '.*' 1.txt |sed '/ro*t/p' -n  
#显示匹配rt,rot,root,rooooot等字符的行。0个或多个o。

grep -n '.*' 1.txt |sed -r '/ro*t/p' -n          
#同上。

grep -n '.*' 1.txt |sed '/ro\+t/p' -n            
#显示含有1个或多个o匹配的行。

grep -n '.*' 1.txt |sed -r '/ro+t/p' -n          
#显示含有1个或多个o匹配的行。同上。

grep -n '.*' 1.txt |sed -r '/root|mysql/p' -n  
#显示包含root或者mysql的行。

grep -n '.*' 1.txt |sed -r '/(oo)+/p' -n         
#显示含有两个oo或多个oo的行。

grep -n '.*' 1.txt |sed -e '/root/p' -e '/mysql/p' -n 
#显示分别匹配root或者mysql的行。如果同一行既有root又有mysql,则该行被打印两次出来。(多个表达式)

grep -n '.*' 1.txt |sed '/root/p ; /mysql/p' -n    
#同上,' '中间有分号; 也是多个表达式写在一起。

grep -n '.*' 1.txt |sed '1,5d'            
#显示删除了1到5行的内容。

grep -n '.*' 1.txt |sed '10,$d'           
#显示删除了10到最后一行的内容。

grep -n '.*' 1.txt |sed '/mysql|root/d' 
#显示删除包含root或者mysql的行内容。

grep -n '.*' 1.txt |sed 's/root/toor/g'     
#把文本中的root替换成toor。前面可以加行号。

grep -n '.*' 1.txt |sed 's/[0-9]//g'        
#把所有数字去掉。

grep -n '.*' 1.txt |sed 's/[^0-9]//g'      
#把所有非数字去掉。  

head 1.txt |sed -r 's/([^:]+)(:.*:)([^:]+$)/\3\2\1/' 
#把1.txt前10行的内容,:冒号最前面的内容和最后面的内容替换    
#文本是以:冒号分割的内容,即[^:]+:.*:[^:]+$,非冒号多个 冒号多个 非冒号多个到结束。
#3,2,1是分段的标号。 
#-r 表示不用转义。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

执子之意

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值