zoukankan      html  css  js  c++  java
  • sed用法

    sed (流编辑器)

     

    1.sed默认不编辑源文件,仅对模式空间的数据进行处理,处理后打印至屏幕

     

    格式:sed 地址编辑命令文件(可以有多个)

     

        地址:就是对那些行做出处理。格式中可以不用空格,就是地址空间中间可以不用空格。

        指定地址的方法:

        (1)起始行,结束行。 例子:1,100  如果是单独一行直接写行号即可

        (2)使用模式 :/正则表达式/    例子:/^root/ 以root开头的行

        (3)/模式1/,/模式2/   表示第一次被“模式1匹配的行开始”,至第一次被“模式2匹配的行结束这中间          所有的行。

        (4)指定的行     $:表示最后一行, $-1:表示倒数第二行。

        (5)指定的行,+N :表示从指定的行开始,向后的N行。

        编辑命令

        1d:删除符合条件的行

        2p:显示符合条件的行

        3a 字符串:在指定的行下边添加新行,内容为字符串。

        4i 字符串: 在指定的行上边添加新行,内容为字符串

        5c 字符串:替换当前行的内容

        6r 将指定的文件的内容添加至符合条件的行处

        7w 将指定范围内的内容另存值指定的文件中。

     

     

    2.编辑命令例子

    例子文件,以下的例子使用此文件

    [root@client2 ~]# cat abc

    123456

    qwe

    hello

    nihao

    benet

    accp

     

    1d:删除符合条件的行

     

    例子1:删除abc文件中的第一行

    [root@bogon ~]# sed '1d' abc

    qwe

    hello

    nihao

    benet

    accp

     

     例子2:删除文件中的1至3行

    [root@client2 ~]# sed "1,3d" abc

    nihao

    benet

    accp         

     

      注意:sed后边的引号用单引号双引号都可以,但是如果里边有变量,而且变量要替换,就要用双引号。

      但是这样修改没有修改源文件,而是修改了模式空间的内容。

     

     如果想直接修改源文件请加上-i选项

        

    2p显示符合条件的行

        sed -n:静默模式 不在默认显示模式空间中的内容。 结合P命令使用,这样符合条件的行就不会显示2遍。模式空间也不会显示

     

      例子:我们将1到3行打印到屏幕上,如果不加-n选项的话结果是以下效果

     

    [root@client2 ~]# sed  "1,3p" abc

    123456

    123456

    qwe

    qwe

    hello

    hello

    nihao

    benet

    accp

     

    13行的内容都被显示了2

     

    加上-n选项就不会出现以上情况了

     

    [root@client2 ~]# sed -n "1,3p" abc

    123456

    qwe

    hello

     

     

    3a字符串:在指定的行下边添加新行,内容为字符串

             

        例子:在第一行的下一行添加字符串hello

        [root@client2 ~]# sed '1a hello' abc

        123456

        hello  #添加完成

        qwe

        hello

        nihao

        benet

        accp

      4字符串: 在指定的行上边添加新行,内容为字符串

       例子:在第一行的上一行添加字符串hello

        [root@bogon ~]# sed '1i hello' abc

        hello

        123456

        qwe

        hello

        nihao

        benet

        accp

     

     5c 字符串:替换当前行的内容

    例子:将第一行的内容替换成hello。

    [root@bogon ~]# sed '1c hello' abc

    hello

    qwe

    hello

    nihao

    benet

    accp

     

    6 r 文件:将指定的文件的内容添加至符合条件的行处

     例子:将b文件的内容添加到第2行下边

    [root@bogon ~]# sed '2r /root/b' abc

    123456

    qwe

    benet

    hello

    nihao

    benet

    accp

     

     

     w 文件:将指定范围内的内容另存值指定的文件中。

     

     例子:将abc文件中的1到3行保存到b文件中

    sed '1,3w /root/b' abc

     

    4.sed替换操作

     

    格式:sed "s/旧内容/新内容/g"   文件名

     

    例子1:将第一行内容的6替换成8

     

    [root@bogon ~]# sed  '1 s/6/8/g' abc

    123458

    qwe

    hello

    nihao

    benet

    accp

     

    例子2:在第一行的行首添加#号进行注释

    [root@bogon ~]# sed '1 s/^/#/g' abc

    #123456

    qwe

    hello

    nihao

    benet

    accp

     

    例子3:在第一行的行尾添加hello

    [root@bogon ~]# sed '1 s/$/hello/g' abc

    123456hello

    qwe

    hello

    nihao

    benet

    accp

     

    例子4:在第一行3的后边添加hello

    [root@bogon ~]# sed '1 s/3/&hello/g' abc

    123hello456

    qwe

    hello

    nihao

    benet

    accp

     

    5.选项

         sed -i  :直接修改源文件

     

    直接删除了源文件的第一行

    sed -i '1d' abc

    以上所有的例子没有加-i选项的没有直接修改源文件而是修改了模式空间的内容

  • 相关阅读:
    基于Spring+SpringMVC实现AOP日志记录功能service注入异常为null的解决办法
    关于SpringBoot项目打包没有把依赖的jar包一起打包的解决办法
    JavaFx项目打包成exe,并集成Jre,使Java项目在任意机器运行
    常用正则表达式
    SqlServer 2005及其以上版本能用的查询数据的行号
    js 中的倒计时功能
    数据库删除重复列
    【转】svn文件清除批处理工具
    JS获取当前页面名称
    sql 去除重复记录
  • 原文地址:https://www.cnblogs.com/pangbing/p/6535627.html
Copyright © 2011-2022 走看看