• 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

    一个是追加,一个是插入

    多行增加 换行

    [root@localhost ~]# sed '2i 107,dandan aasdfasdf' 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

  • 相关阅读:
    [语录]学习和知识建立于见解的多样性上
    [语录]要紧的是选择能干、诚实而且勤勉的人
    [EnterpriseServices]利用assembly定义我们的组件在COM+中的注册方式
    [EntLib]在SR.Strings中使用中文字符串资源
    如何让Win2000和XP SP1支持System.EnterpriseServices(XP已验证)
    [C#]使用HttpWebRequest请求远端服务器时如何加载SSL证书
    [纪事]再见,CodeArtist(下)
    [ZT]Google Web Accelerator 进一步的发展?
    [纪事]再见,CodeArtist
    [WiX]我的第一个WiX安装脚本
  • 原文地址:https://www.cnblogs.com/huangchuan/p/11550437.html
Copyright © 2020-2023  润新知