工具之sed

转自:http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法
sed命令行格式为:
         sed [-nefri] ‘command’ 输入文本

常用选项:
        -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
        -e∶直接在指令列模式上进行 sed 的动作编辑;
        -f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
        -r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
        -i∶直接修改读取的档案内容,而不是由萤幕输出。

常用命令:
        a   ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
        c   ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
        d   ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
         i   ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
         p  ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
         s  ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

举例:(假设我们有一文件名为ab)
     删除某行
     [[email protected] ruby] # sed ‘1d‘ ab              #删除第一行 
     [[email protected] ruby] # sed ‘$d‘ ab              #删除最后一行
     [[email protected] ruby] # sed ‘1,2d‘ ab           #删除第一行到第二行
     [[email protected] ruby] # sed ‘2,$d‘ ab           #删除第二行到最后一行

  显示某行
.    [[email protected] ruby] # sed -n ‘1p‘ ab           #显示第一行 
     [[email protected] ruby] # sed -n ‘$p‘ ab           #显示最后一行
     [[email protected] ruby] # sed -n ‘1,2p‘ ab        #显示第一行到第二行
     [[email protected] ruby] # sed -n ‘2,$p‘ ab        #显示第二行到最后一行

  使用模式进行查询
     [[email protected] ruby] # sed -n ‘/ruby/p‘ ab    #查询包括关键字ruby所在所有行
     [[email protected]t ruby] # sed -n ‘/\$/p‘ ab        #查询包括关键字$所在所有行,使用反斜线\屏蔽特殊含义

  增加一行或多行字符串
     [[email protected] ruby]# cat ab
     Hello!
     ruby is me,welcome to my blog.
     end
     [[email protected] ruby] # sed ‘1a drink tea‘ ab  #第一行后增加字符串"drink tea"
     Hello!
     drink tea
     ruby is me,welcome to my blog. 
     end
     [[email protected] ruby] # sed ‘1,3a drink tea‘ ab #第一行到第三行后增加字符串"drink tea"
     Hello!
     drink tea
     ruby is me,welcome to my blog.
     drink tea
     end
     drink tea
     [[email protected] ruby] # sed ‘1a drink tea\nor coffee‘ ab   #第一行后增加多行,使用换行符\n
     Hello!
     drink tea
     or coffee
     ruby is me,welcome to my blog.
     end

  代替一行或多行
     [[email protected] ruby] # sed ‘1c Hi‘ ab                #第一行代替为Hi
     Hi
     ruby is me,welcome to my blog.
     end
     [[email protected] ruby] # sed ‘1,2c Hi‘ ab             #第一行到第二行代替为Hi
     Hi
     end

  替换一行中的某部分
  格式:sed ‘s/要替换的字符串/新的字符串/g‘   (要替换的字符串可以用正则表达式)
     [[email protected] ruby] # sed -n ‘/ruby/p‘ ab | sed ‘s/ruby/bird/g‘    #替换ruby为bird
   [[email protected] ruby] # sed -n ‘/ruby/p‘ ab | sed ‘s/ruby//g‘        #删除ruby

插入
     [[email protected] ruby] # sed -i ‘$a bye‘ ab         #在文件ab中最后一行直接输入"bye"
     [[email protected] ruby]# cat ab
     Hello!
     ruby is me,welcome to my blog.
     end
     bye

删除匹配行

sed -i ‘/匹配字符串/d‘  filename  (注:若匹配字符串是变量,则需要“”,而不是‘’。记得好像是)

替换匹配行中的某个字符串

sed -i ‘/匹配字符串/s/替换源字符串/替换目标字符串/g‘ filename

时间: 2024-10-21 10:21:09

工具之sed的相关文章

Linux系统上的文本处理工具之sed

sed命令 sed是一种在线编辑器.行编辑器,一次处理一行内容,在处理时,把当前处理的行存储在临时缓冲区当中,该缓冲区称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完毕后,把缓冲区的内容送到标准输出:然后紧接着去处理下一行,重复完成相同的操作,直至文件结尾:sed处理的整个过程中,对象文件中的内容并没有改变,除非使用重定向来存储处理后的结果.sed主要用来自动编辑一个或多个文件,简化对文件的反复操作过程. sed跟我们之前讲过的文本处理工具vi

关于文本处理工具之SED

处理文本的工具sed 行编辑器:         sed 是一种流编辑器,它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,我们称为"模式空间"        接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理以下一行,这样不断重复,直到文件末尾.        文件内容并没有改变,除非你使用重定向存储输出.sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等 还有一种模式叫做保持空间:sed工作机制是每次读取一行文本至'

文本处理工具之sed

sed 行编辑器 sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.然后读入下行,执行下一个循环. 如果没有使诸如'D' 的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间.这样不断重复,直到文件末尾.文件内容并没有改变,除非你使用重 定向存储输出. 功能 主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序

7、Shell工具 cut sed awk sort

1 cut cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的.cut 命令从文件的每一行剪切字节.字符和字段并将这些字节.字符和字段输出. 1.基本用法 cut [选项参数]  filename 说明:默认分隔符是制表符 2.选项参数说明 表1-55 选项参数 功能 -f 列号,提取第几列 -d 分隔符,按照指定分隔符分割列 -c 指定具体的字符 cut -c 2,3,4     cut -c 2-8   2-8之间的字符 3.案例实操 (0)数据准备 [[email protect

Linux下的强大工具之一sed(转),Shell必备

sed命令基本用法sed是一个非交互式文本编辑器,它可以对文本文件和标准输入进行编辑,标准输入可以是来自键盘输入.文件重定向.字符串.变量.来自管道的文本等等.sed从文本的一个文本行或标准输入中读取数据,将其复制到缓存区,然后读取命令行或脚本的第一个命令,对此命令要求的行号进行编辑,重复此过程,直到命令行或脚本中所有命令都执行完了.sed可以一次性处理所有的编辑命令,非常高效 sed适用于下面三种场合:* 编辑相对于交互式文本编辑器而言太大的场合* 编辑命令太复杂,在交互式文本编辑器中难以输入

Linux文本处理工具之sed

概念: sed是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓存区中,称为"模式空间(pattern space)",接着用舍得命令处理缓冲区中的内容,处理完成后,把缓存区的内容输出.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有改变,除非你是用重定向存储输出.sed主要用来编辑一个活多个文件. 格式: sed [-nefri] 'command' 输入文本 常用选项: -n:使用安静(silent)模式.在一般sed的用法中,所有来自STDIN的资

文本处理工具之---sed

sed,Stream editor的缩写,功能很强大,可以进行文本替换删除打印等,与grep.awk不同的是,它侧重点在于整行的编辑: 它的工作过程是,首先将文件分成以行为单位,然后将每一行逐次的放入缓冲区(模式空间),sed将其处理完毕后发送到标准输出,处理完最后一行sed便运行结束.由于sed是对存储在缓冲区的文件进行辑,因此,sed不会修改或者损坏正在编辑的文件. sed的用法: sed [OPTION]... 'script' [input-file]... sed的选项参数比较少,主要

文本处理工具之SED流编辑器

文本处理三剑客之SED(流编辑器) sed的工作方式:在指定文件中,按行读取内容至模式空间,然后根据sed的scripts编辑改行内容,编辑完毕后输出至屏幕,再读取下一行进行处理.如果有该行内容未被处理完毕就有新的内容要进行编辑,则把该行内容移至保持空间中,,保持空间中的内容可以随时调回模式空间中. sed的使用 使用格式:sed [options...] 'scipts' file 常用选项: -n:不输出模式空间中的内容至标准输出(不自动打印) -e script:多点编辑sed -e '[

【Linux】日志分析工具grep sed sort

遇到一个问题,在查询日志时发现,服务器上打印的文件有很多个,每个都存储了一部分日志, 需要将日志按照时间排序,并显示所有日志. 原命令: grep -h  searchContent */*log 搜索出来的结果会将所有内容显示出来格式如下: File1.log:时间…. File2.log:时间…. 由于文件名后面的日志也包含:,所以使用分隔符:进行分隔排序的方法不可行,此时需要在grep时不将文件名包含进来,搜索一通之后,找到一个参数"-h",可以不显示文件名 grep -h  s