sed:数据流编辑器

读一行到内存处理一行然后输出一行。

模式空间:

sed:默认不编辑源文件

sed [option]    ADDRESSCOMMAND   file

1、起始行、 结束行

sed   startline,endline   file               sed 2,5p  file

2、模式匹配   /模式/

sed /^root/p   file                    匹配到会打印两次,因为每个本身都要打印

3、 /模式1/,/模式2/

sed /^l/,/^h/p   file       以l开头的行到以h结尾的行,都指第一次匹配的

4、只给一个数值,行号,表示精确指定某行

sed  5p  file

5、指定起始行,使用+N,表示从指定的行开始,向后的N行,共N+1行内容
sed 10,+5 file

sed命令:
    p:显示符合条件的行
    d:删除符合条件的行              sed  /^'  '/d   file    删除空白开头的行
    a: append 用法:a \string 在指定的行后追加新行,内容为string

# sed    '/d$/a  \hello world\nhello world'   file      在以d结尾后面加两行内容

其实就把这些内容当成一个字符串追加进来,只是\n在文本里被当成换行符处理了
    i:insert 用法:i \string 在指定的行的前面插入新行。内容为string \n
    r:r filename 将指定的文件的内容添加至符合条件的行处   sed '/d$/r/root/t2' t
    w:w filename 将指定范围内的内容另存为到指定的文件中(重复会覆盖)  sed /d$/w /tmp/d.txt  t
    s:查找并替换。s/匹配模式/要替换的内容/;@ # $ % a
每行所有匹配到的内容都替换:
    g:全局替换                          sed  s/d/D/g file     sed/s/l..e/&r/g   file    &指匹配的整体

i:查找的时候忽略字符的大小写

sed的选项:
        
-n:静态模式,不显示模式空间中的内容,只显示匹配条件的行        sed -n 1p  file
-r:使用扩展正则表达式  sed  -r  s/(l..e)(m+)/\1r\2xx/g  file   \1指括号里的整体(后向引用) 不用转义括号
-i:直接修改源文件

练习:
有一个文本文件:

username,age,gender,salary
zhangsan,20,F,2000

sed的后向引用:
    &表示引用模式匹配的整个字符串

练习:
1、将history命令的结果行首的空白字符删掉[[:space:]]

history | sed s/^[[:space:]]//g
2、取出一个文件路径的父目录 比如/var/log/mysql/acces.log ===>/var/log/mysql/
                  echo"/var/log/mysql" | sed -r 's#^(/?.*/).+/?#\1#g'
3、删除文件中以空白字符+#开头的行中的空白字符及#
   #asdsdasd
==>
asdasd
sed -r  s/^[[:space:]]+#//g file

sed -r   's/^(l.*e$)/#\1/g'  file    给l开头e结尾的加注释#

shell--学习 sed的更多相关文章

  1. Shell学习:sed命令

    http://blog.sina.com.cn/s/blog_a56ef5490101cn58.html sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行 ...

  2. shell学习笔记

    shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...

  3. shell学习指南-阅读笔记

    shell学习指南真不是刚开始学习shell应该看得书,虽然其中讲了简单的linux命令,shell语法等,但是每章也有些深入和生僻地方,我想如果我刚学shell看到这样的地方一定会头疼的要死.或许也 ...

  4. Shell学习之结合正则表达式与通配符的使用(五)

    Shell学习之结合正则表达式与通配符的使用 目录 通配符 正则表达式与通配符 通配符 通配符的使用 正则表达式 正则表达式 正则表达式的使用 通配符 正则表达式与通配符 正则表达式用来在文件中匹配符 ...

  5. shell 学习笔记2-shell-test

    一.字符串测试表达式 前面一篇介绍:什么是shell,shell变量请参考: shell 学习笔记1-什么是shell,shell变量 1.字符串测试表达式参数 字符串需要用""引 ...

  6. Linux shell利用sed如何批量更改文件名详解[转载]

     需求背景: 目录A用来存放自动化的包生成的apk文件,现在开发修改了包名的 命名规则:环境名称(pro|uat)-release-日期-v版本号.apk 原来的是思路是通过正则表达式匹配新的包名,但 ...

  7. Shell之sed用法 转滴

    通过例子学习sed的用法 1,sed介绍    sed可删除(delete).改变(change).添加(append).插入(insert).合.交换文件中的资料行,或读入其它档的资料到 文> ...

  8. [shell基础]——sed命令

    关于sed sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓 ...

  9. shell学习总结之自定义函数

    shell学习总结之自定义函数 Myfun (){ echo -n "now i is $i " ! [ "$i" ] && exit ; ec ...

  10. SHELL学习笔记----IF条件判断,判断条件

    SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外.  if list then           do something here   ...

随机推荐

  1. Qt之图标切分与合并

    有些时候会将多张有相同功能的图片绘制成一张,不管是使用或者绘制上都会方便很多.对美工与开发者来说也都是一件省事.省力.更省心的方式.二全其美,又何乐而不为呢... 例如:QQ等级     0-9可以组 ...

  2. 解决Unable to connect to a repository at URL 禁止访问 (forbidden)

    连接SVN报如下错误. Unable to connect to a repository at URL 禁止访问 (forbidden) 1.         右键点击本地副本,TortoiseSV ...

  3. PHP网址

    15个魔术方法的总结: http://blog.csdn.net/bossdarcy/article/details/6210794 PHP代码重构:http://blog.csdn.net/tony ...

  4. Windows转到linux中,文件乱码,文件编码转换

    最近,学习又重新开始Linux学习,所以一直在Centos中,昨天一朋友把他在Windows下写的C程序发给我,我欣然答应,本以为很快就能在我的Linux系统中运行起来.没想到出现了乱码,结果想把这个 ...

  5. CSS中filter滤镜学习笔记

    1.CSS静态滤镜样式 (filter)(只有IE4.0以上支持)  CSS静态滤镜样式的使用方法:{ filter : filtername( parameters1, parameters2, . ...

  6. GLSL-几何着色器详解跟实例(GS:Geometry Shader)[转]

    [OpenGL4.0]GLSL-几何着色器详解和实例(GS:Geometry Shader) 一.什么是几何着色器(GS:Geometry Shader) Input Assembler(IA)从顶点 ...

  7. linux 磁盘管理学习笔记

    磁盘管理命令:fdisk df du fdisk #查看硬盘分区表 df #查看分区使用情况 du #查看文件占用空间情况lvdisplay #逻辑分区 [1] 李洋.df.du.fdisk:Linu ...

  8. MS WORD 表格自己主动调整列宽,自己主动变美丽,依据内容自己主动调整

    在MS WORD中,当有大量的表格出现时,调整每一个表格的的高和宽和大小将是一件很累的事情,拖来拖去,很耗时间,并且当WORD文档达到300页以上时,调整反应很的慢,每次拖拉线后,须要等待一段时间其才 ...

  9. TP复习3

    ## ThinkPHP 3.1.2 CURD特性#讲师:赵桐正微博:http://weibo.com/zhaotongzheng 本节课大纲: 一.ThinkPHP 3 的CURD介绍 (了解) 二. ...

  10. [051] 微信公众平台开发教程第22篇-怎样保证access_token长期有效

    为了使第三方开发人员能够为用户提供很多其它更有价值的个性化服务,微信公众平台开放了很多接口,包含自己定义菜单接口.客服接口.获取用户信息接口.用户分组接口.群发接口等,开发人员在调用这些接口时.都须要 ...