Linux文本处理三剑客之sed

简介:
 1.sed简介
     sed是文本处理命令,因为其强大的功能而可称之为一种数据流编辑器。sed 对文本的处理很强大,并且sed非常小,参数少,容易掌握,他的操作方式根awk
有点像。sed 一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,
称为“模式空间”pattern space),接着用sed命令处理缓冲区中的内容,处理完
成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。
文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或
多个文件;简化对文件的反复操作;简单的将,sed可以对文进中的每一行内容进
行增删改查等操作。
2. 定址   
       可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分隔的两
个行数表示以这两行为起止的行的范围(包括行数表示的那两行)。如1,3表示1
,2,3行,美元符号($)表示最后一行。范围可以通过数据,正则表达式或者二者
结合的方式确定 。

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

       a   ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
       c   ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
       d   ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
        i   ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)
        p  ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
        s  ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示
        法!例如 1,20s/old/new/g 就是啦!
5. 元字符集
   ^  锚定行的开始 如:/^sed/匹配所有以sed开头的行。  
   $  锚定行的结束 如:/sed$/匹配所有以sed结尾的行。  
   .  匹配一个非换行符的字符 如:/s.d/匹配s后接一个任意字符,然后是d。  
   *  匹配零或多个字符 如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。  
    [] 匹配一个指定范围内的字符,如/[Ss]ed/匹配sed和Sed。  
   [^] 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z
          的一个字母开头,紧跟ed的行。  
   \(..\) 保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers。  
   & 保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。  
   \<  锚定单词的开始,如:/\<love/匹配包含以love开头的单词的行。  
   \>  锚定单词的结束,如/love\>/匹配包含以love结尾的单词的行。  
   x\{m\}  重复字符x,m次,如:/0\{5\}/匹配包含5个o的行。  
   x\{m,\}  重复字符x,至少m次,如:/o\{5,\}/匹配至少有5个o的行。  
   x\{m,n\}  重复字符x,至少m次,不多于n次,如:/o\{5,10\}/匹配5--10个o
                   的行。  

6.例1
   $ sed -e '/test/h' -e '$G example-----           在sed处理文件的时候,每一行都被保存在一个叫模式空间的临时缓冲区中,
   除非行被删除或者输出被取消,否则所有被处理的行都将 打印在屏幕上。接着模
   式空间被清空,并存入新的一行等待处理。在这个例子里,匹配test的行被找到
   后,将存入模式空间,h命令将其复制并存入一个称为保 持缓存区的特殊缓冲区    内。第二条语句的意思是,当到达最后一行后,G命令取出保持缓冲区的行,然
   后把它放回模式空间中,且追加到现在已经存在于模式空间中 的行的末尾。在这    
   个例子中就是追加到最后一行。简单来说,任何包含test的行都被复制并追加到
   该文件的末尾。  
   $   sed -i '/匹配字符串/s/替换源字符串/替换目标字符串/g' filename
      例2
      举例:(假设我们有一文件名为ab)
    删除某行
    [root@localhost ruby] # sed '1d' ab              #删除第一行
    [root@localhost ruby] # sed '$d' ab              #删除最后一行
    [root@localhost ruby] # sed '1,2d' ab           #删除第一行到第二行
    [root@localhost ruby] # sed '2,$d' ab           #删除第二行到最后一行
显示某行
.    [root@localhost ruby] # sed -n '1p' ab           #显示第一行
    [root@localhost ruby] # sed -n '$p' ab           #显示最后一行
    [root@localhost ruby] # sed -n '1,2p' ab        #显示第一行到第二行
    [root@localhost ruby] # sed -n '2,$p' ab        #显示第二行到最后一行
                                      使用模式进行查询
    [root@localhost ruby] # sed -n '/ruby/p' ab    #查询包括关键字ruby所
                                              在所有行
    [root@localhost ruby] # sed -n '/\$/p' ab        #查询包括关键字$所在所

                                             有行,使用反斜线\屏蔽特殊含义


本文转自willis_sun 51CTO博客,原文链接:http://blog.51cto.com/willis/1845886,如需转载请自行联系原作者


相关文章
|
3月前
|
Linux Shell Perl
Linux下的Shell基础——文本处理工具(五)
Linux下的Shell基础——文本处理工具(五)
31 1
Linux下的Shell基础——文本处理工具(五)
|
7月前
|
Unix Linux 测试技术
软件测试|Linux三剑客之sed命令详解
软件测试|Linux三剑客之sed命令详解
75 0
|
2月前
|
存储 监控 Linux
性能工具之linux三剑客awk、grep、sed详解
Linux 三剑客 awk,sed和grep 在性能领域广泛用于性能建模、性能监控及性能分析等方面,也是各大互联网公司测试岗高频面试题,中高端测试人员必备技能之一。
57 1
性能工具之linux三剑客awk、grep、sed详解
|
2月前
|
弹性计算 Linux Shell
Linux技术基础(2)——文本处理
文本处理实验:探索[Vim](https://developer.aliyun.com/adc/scenario/aced2264751f4866a8340de4cf9db0fa)的命令、输入和底线模式,学习文本编辑快捷操作,如光标移动、删除、复制和粘贴。了解如何使用底线命令模式进行文件保存、退出及搜索替换。同时,掌握`cat`、`more`、`less`、`head`、`tail`等文本查看命令,以及`stat`、`wc`、`file`、`diff`等文件处理命令。利用`grep`、`sed`、`awk`和`cut`进行文本搜索、替换和分析。
|
2月前
|
Shell Linux C语言
【Shell 命令集合 文本处理工具】Linux 字段连接 join 命令使用指南
【Shell 命令集合 文本处理工具】Linux 字段连接 join 命令使用指南
32 1
|
2月前
|
存储 Shell Linux
【Shell 命令集合 文件管理】Linux 文本处理工具 awk命令使用指南
【Shell 命令集合 文件管理】Linux 文本处理工具 awk命令使用指南
38 0
|
存储 Shell Linux
⭐⭐⭐【Shell 命令集合 文档编辑 】Linux 文件内容处理 sed命令使用指南
⭐⭐⭐【Shell 命令集合 文档编辑 】Linux 文件内容处理 sed命令使用指南
27 0
|
2月前
|
监控 Linux
Linux 常用的文本处理工具
将一个或多个文件的内容连接并显示在终端上,创建新文件或将内容追加到已有文件。 不会分屏显示文件内容,适用于较小的文件。 在执行上述命令后,你可以输入内容,按Ctrl + D保存并退出。 more/less 分页 more filename more 按空格键查看下一页,按Enter键查看下一行,按q键退出并退出,使用b向上翻动一页。 less 可以被视为 more 的升级版本 less filename less 按空格键查看下一页,按Enter键查看下一行,按q键退出并退出,使用b向上翻动一页,使用箭头键、搜索命令 /。
20 2
|
8月前
|
移动开发 Unix Linux
sed命令在Mac和Linux下的不同
sed命令在Mac和Linux下的不同
43 0
|
4月前
|
Linux Perl
Linux sed
Linux sed
162 1