Linux中sed使用

Sed是stream editor(流编辑器)是操作,过滤和转换文本内容的强大工具。常用功能有增删改查,过滤,取行。

增:

追加文本到指定行后          a

插入文本                            i

例子:单行增加

[root@localhost ~]# sed '2a 107,dandan' test.txt

124567668

dfgjkllkjhvkl

107,dandan

Adsfkadsjf

[root@localhost ~]# sed '2i 107,dandan' test.txt

124567668

107,dandan

dfgjkllkjhvkl

adsfkadsjf

一个是追加,一个是插入

多行增加 \n换行

[root@localhost ~]# sed '2i 107,dandan\naasdfasdf' test.txt

124567668

107,dandan

aasdfasdf

dfgjkllkjhvkl

adsfkadsjf

企业案例:

在我们学习系统优化时,有一个优化点:更改ssh服务远程登录的配置。主要的操作是在ssh的配置文件中加入下面五行文本

  1. Port 52113
  2. PermintRootLogin no
  3. PermitEmptyPasswords no
  4. UseDNS no
  5. GSSAPIAuthentication no

删除指定行    d

不指定几行,默认全部删除

按行替换

用新行取代旧行          c

文本替换

Sed -I ‘s###g’ #就是定界符

如果没有g,就是不是全局替换,g是全局都会改变

Sed -r使用扩展正则表达式,(.*) \1

&做替换批量重命名文件

[root@localhost ~]# cd /test
[root@localhost test]# ls
[root@localhost test]# touch stu_102999_{1..5}_finished.jpg
[root@localhost test]# ls
stu_102999_1_finished.jpg  stu_102999_3_finished.jpg  stu_102999_5_finished.jpg
stu_102999_2_finished.jpg  stu_102999_4_finished.jpg
[root@localhost test]# ls  *.jpg
stu_102999_1_finished.jpg  stu_102999_3_finished.jpg  stu_102999_5_finished.jpg
stu_102999_2_finished.jpg  stu_102999_4_finished.jpg
[root@localhost test]# ls  *.jpg | sed -r 's#(^.*)_finished.*#mv & \1.jpg#g'
mv stu_102999_1_finished.jpg stu_102999_1.jpg
mv stu_102999_2_finished.jpg stu_102999_2.jpg
mv stu_102999_3_finished.jpg stu_102999_3.jpg
mv stu_102999_4_finished.jpg stu_102999_4.jpg
mv stu_102999_5_finished.jpg stu_102999_5.jpg
[root@localhost test]# ls  *.jpg | sed -r 's#(^.*)_finished.*#mv & \1.jpg#g' |bash
[root@localhost test]# ls
stu_102999_1.jpg  stu_102999_2.jpg  stu_102999_3.jpg  stu_102999_4.jpg  stu_102999_5.jpg

查:

输出指定内容  p 但是默认会输出2次匹配的结果,因此使用n取消默认输出

[root@localhost ~]# sed '2p' test.txt 
124567668
dfgjkllkjhvkl
dfgjkllkjhvkl
adsfkadsjf
[root@localhost ~]# sed -n '2p' test.txt 
Dfgjkllkjhvkl
2-3行
[root@localhost ~]# sed -n '2,3p' test.txt 
dfgjkllkjhvkl
adsfkadsjf

1~2p就是取1,3,5,奇数行显示所有奇数行

命令的执行df -h == echo ‘df -h’ | bash

 

转载于:https://www.cnblogs.com/huangchuan/p/11550437.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值