码迷,mamicode.com
首页 > 系统相关 > 详细

linux----->shell高级编程----sed应用

时间:2016-07-05 06:33:17      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:version   linux   过滤器   insert   option   

  背景

    sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作.

sed意为流编辑器(StreamEditor),在Shell脚本和Makefile中作为过滤器使用非常普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出。sed和vi都源于早期UNIX的ed工具,所以很多sed命令和vi的末行命令是相同的。


sed命令行格式为: 

    sed option ‘script‘ file1 file2 ...

    sed option -f scriptfile file1 file2 ...


常用参数:

--version

显示sed版本

--help

显示帮助文档

-n 
取消默认输出
-e指定多个指令执行
-i
修改文件内容(默认不修改原文件内容)
-r
使用扩张正则表达式

输出占位符

a(append)

追加

i(insert)
插入
d(delete)
删除
s(substitution)

替换

p(print)
打印


主要的介绍了这么多,下面开始实践(实践中出真理)

    1. 显示第二行

    原始数据

    技术分享


[#20#sea@~ 22:06:04]$sed ‘2p‘ test.txt

    技术分享

    此时我们发现 [bbbbb.....bbb] 多输出一行,证明2p打印了第二行, 此时我们发现原始数据也打印了,不符合题意.

 

   技术分享

   此时加上 [ -n ]参数, 精确只打印第二行



     2. 使用 -e 多条语句 输出指定行的数据

        原始数据

        技术分享

    

[#23#sea@~ 22:06:04]$ sed -n -e ‘2p‘ -e ‘4p‘ test.txt

    技术分享



   3. 输假设一个文本(test.txt)中有1-100行数据,要求打印出20-30行数据

    首先我们利用循环机制模拟出100行数据

[#24#sea@~ 22:06:04]$ for i in `seq 100`; do echo $i >> test.txt ; done

      利用wc -l 查看文件行数

[#25#sea@~ 22:32:29]$wc -l test.txt

    技术分享


    题目实现如下

    技术分享



注:sed 的功能不止如此,因时间和生产环境有限,更详细的sed介绍文章将后续发布, 敬请关注.

    

本文出自 “sea” 博客,请务必保留此出处http://lisea.blog.51cto.com/5491873/1795754

linux----->shell高级编程----sed应用

标签:version   linux   过滤器   insert   option   

原文地址:http://lisea.blog.51cto.com/5491873/1795754

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!