• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Linux命令之sed命令使用介绍

    sed是linux轻量级流编辑器,用于行的操作,主要用来数据的选取、替换、删除、新增等。从输入文件中一次一行的读取,

    按顺序将列表中的命令应用到每一行,并将其编辑过的行,写到标准输出。

    权  限:所有用户

    位  置:/bin/sed

    用  法:sed [-nefr]  [动作]  file

    参数:

    -n

             不加-n的时候,sed处理的数据和不处理的都会输出,加上-n只会输出sed操作的行,

             注意:与动作p和起来用,不要与其他动作一起用

    -e

             直接在命令行模式上进行sed的动作编辑

             例如:sed -e 's/aaa/b/g; s/aa/b/g' file 也即多个动作同时操作,注意中间的分号

    -f          

             直接将sed动作写在一个文件内,-f file 则可以执行filename内的sed动作

    -r

             sed的动作支持扩展的正则表达式(默认支持基础正则表达式)

    -i

             直接修改读取的文件内容

    注意:多个选项参数一起用的时候,例如:sed  -i  -r  ...             不可以这样:sed -ir  ...

    动作说明:[n1[,n2]] function

             不见得会存在,一般代表选择动作的行数,如果动作是在5到15行之间进行替换,则"10,20c"

    a      新增,当前行的下一行

             sed '2a hello world' file  输出在第2行之后插入hello world


             sed '2a hello world\      

             my name is csdn'  file      

            输出在2行下面插入两行分别为hello world  和my name is scdn

             特别注意hello world 后面的"\&;

    c       替换,是整行替换

             sed '3,6c  hello csdn'  file  

             输出把3至6行的只替换为 hello csdn(第3至6行只剩下一行hello csdn,不是3至6行的每一行都为hello csdn)

    d       删除

              sed '3,6d' file   输出删除file的3至6行之后的内容

    i        插入,当前行的上一行

              与a动作类似,参照a动作用法

    p       打印

              sed  -n  '2,5p' file   打印file的第2至5行

    s        替换

              sed 's/oldString/newString/g' file   oldString和newString支持基础正则表达式和扩展的正则表达式

              cat -n nginx | sed '1,99s/[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}//g'  把nginx日志的1至99行的第一个字段IP地址替换为空

              结果为:

        91	 - - [15/Dec/2014:23:00:10 +0800],GET /identified?key=this-is-TMP-apikeydigest=914EBB2FD551844CBE15513C0126E6EEdigest-algorithm=ed2khash=9D37BB2988F26973371FAB028FEEEB93D5542300 HTTP/1.1,200 65,-,XMP Windows Client 4.9,-,ed2k://|file|ki141213.wmv|1119747351|914EBB2FD551844CBE15513C0126E6EE|h,00E04C377725NG4E,ki141213.wmv,1119747351
        92	 - - [15/Dec/2014:23:00:10 +0800],GET /identified? HTTP/1.1,401 112,-,-,-,-,-,-,-
        93	 - - [15/Dec/2014:23:00:10 +0800],GET /identified? HTTP/1.1,401 112,-,-,-,-,-,-,-
        94	 - - [15/Dec/2014:23:00:10 +0800],GET /identified? HTTP/1.1,401 112,-,-,-,-,-,-,-
        95	 - - [15/Dec/2014:23:00:10 +0800],-,400 0,-,-,-,-,-,-,-
        96	 - - [15/Dec/2014:23:00:10 +0800],GET /identified?key=this-is-TMP-apikeydigest=76BB7C854168DCD1BF15FCB92E4114FFD4CFE7DEdigest-algorithm=magnethash=28003498535 HTTP/1.1,200 65,-,Thunder Windows Client 7.9,-,magnet:?xt=urn:btih:76BB7C854168DCD1BF15FCB92E4114FFD4CFE7DE,EC55F9E92A5212LQ,ABP-209R,1067178826
        97	 - - [15/Dec/2014:23:00:10 +0800],GET /identified? HTTP/1.1,401 112,-,-,-,-,-,-,-
        98	 - - [15/Dec/2014:23:00:10 +0800],GET /identified? HTTP/1.1,401 112,-,-,-,-,-,-,-
        99	 - - [15/Dec/2014:23:00:10 +0800],-,400 0,-,-,-,-,-,-,-
       100	121.12.57.154 - - [15/Dec/2014:23:00:10 +0800],GET /identified? HTTP/1.1,401 112,-,-,-,-,-,-,-


    动作其他用法1:sed  '/模式/动作'  文件

    可以指定某种模式的行进行动作操作,如下(这里的文件名是a,注意cat a的输出):

    1、以p开头的行前加[TAB]

    $ cat a
    pa:11:a
    sa:32:c
    app:5:b
    stort:1:d
    pear:4:aa
    hello:3:f
    
    $ sed '/^p/s/^/\t/' a
    	pa:11:a
    sa:32:c
    app:5:b
    stort:1:d
    	pear:4:aa
    hello:3:f
    

    2、删除以a开头的行,(那么下面的输出,以a开头的行就没了)

    $ sed '/^a/d' a
    pa:11:a
    sa:32:c
    stort:1:d
    pear:4:aa
    hello:3:f
    3、反向匹配(文件a中,输出只保留了a开头的行)

    $ sed '/^a/!d' a
    app:5:b
    

    4、等价与grep -v   (输出文件a中,非p字母开头的行)

    $ grep  -v '^h' a
    pa:11:a
    sa:32:c
    app:5:b
    stort:1:d
    pear:4:aa
    
    $ sed -n '/^h/!p' a
    pa:11:a
    sa:32:c
    app:5:b
    stort:1:d
    pear:4:aa


    动作其他用法2:

    也可以使用成对的正则表达式或行号与正则表达式的结合,来选取一定范围的行,如下:

    1、sed '1,3d'  file   删除1至3行

    2、sed -n '1,3p' file  打印1至3行

    3、sed  '1, /^$/d' file  删除范围:第一行至第一个空行 (注意格式)

    4、sed '/^$/, /^app/d' file  删除范围:第一个空行至以app开头的行

    5、sed '$d'  file   删除最后一行

    注意:反向匹配行,是动作前加感叹号 (!d    !s    !c等等)


    如果前面的命令直接加入-i,则直接修改文件





    上一篇:Linux命令之日期时间命令date使用实例
    下一篇:Linux命令之cut命令使用介绍
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Linux命令之sed命令使用介绍 Linux,命令,之,sed,使用,介绍,