首页 > 代码库 > linux 命令之sed

linux 命令之sed

sed是linux轻量级流编辑器,用于行的操作,主要用来数据的选取、替换、删除、新增等。

权  限:所有用户

位  置:/bin/sed

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

参数:

-n

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

-e

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

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

-f          

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

-r

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

-i

         直接修改读取的文件内容

动作说明:[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-apikey&digest=914EBB2FD551844CBE15513C0126E6EE&digest-algorithm=ed2k&hash=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-apikey&digest=76BB7C854168DCD1BF15FCB92E4114FFD4CFE7DE&digest-algorithm=magnet&hash=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,-,-,-,-,-,-,-

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





linux 命令之sed