zoukankan      html  css  js  c++  java
  • 流编辑器:sed

    一 简介:
    sed是一个精简的、非交互式的流式编辑器,它在命令行中输入编辑命令和指定文件名,然后在屏幕上查看输出。
    逐行读取文件内容到临时缓冲区,称为模式空间。接着用sed命令处理缓冲区内容,处理完之后,把缓冲区内容送往屏幕。接着处理下一行
    这样不断的重复,直到文件末尾。原文件内容并没有改变。

    二 简单的例子:
    sed  cmd   输入文件

    sed '4,$d' test.in :逐行读取,删除4-最后一行
    sed '3q' test.in:处理到第三行的时候退出,也就是前三行原样输出
    sed 's/public/PUBLIC/' test.in:将public替换成PUBLIC  (/g替换每行所有的)
    sed  -n 's/public/PUBLIC/g' test.in:没有输出 -n阻止输入行自动输出
    sed -n 's/public/PUBLIC/p' test.in:输出只有public的行。p命令

    三 指定多个命令的三种方法:
    用分号隔开:sed 's/public/PUBLIC/;s/north/NPRTH/'  test.in
    每个命令前放置-e选项: sed -e 's/public/PUBLIC/'  -e 's/north/NORTH/' test.in
    使用分行命令功能,在输入单引号后按Enter回车 键就会多出提示符(>)
    sed '
    > s/public/PUBLIC/
    > s/north/NORTH' test.in

    -f:指定sed脚本文件.就是说 s/public/PUBLIC/ s/north/NORTH/等命令配置到test.sed脚本文件中。随便的本文件都可以
    sed -f test.sed test.

    四 sed命令cmd语法:
    sed_cmd:使用格式
    [address]sed_edit_cmd (通常用单引号括起来) 其中address为sed的行定位模式,用于指定将要被sed编辑的行。如果省略,sed将编辑所有的行。
    sed_edit_cmd为sed对被编辑行将要进行的编辑操作。
    address的定位方式:
    n:表示第n行
    $:表示最后一行
    m,n:表示从第m到第n行
    /pattern/:查询包含指定模式的行。
    /pattern/,n:表示从指定模式到第n行
    !:反向选择。如m,n!与m,n相反
    例子:
    sed -n '$p' test.in:打印最后一行  如果没有-n 原来的文本也会原样输出
    sed -n  '/north/p' test.in:包含 /pattern/的行

    五 常用的sed_edit_cmd:
    p:打印匹配行。  记得-n阻止输出。否则会先按原样打印原来的行
    =:显示匹配行的行号  sed -n '/north/=' test.in
    d:删除匹配行
    sed -n '/public/d' test.in

    a:在。。。行后加行...
    i:在...行之前插入
    c:替换成...
    例如:sed '/public/aAAA
    >BBB
    >CCC' test.in  在public行后加三行AAA BBB CCC

    六 替换命令:
    s:替换命令  格式
    [address]s/old/new/[gpw]
    address:如果省略表示编辑所有行
    g:全局替换
    p:打印被修改行
    w filename:将被替换的行内容写到指定文件

    sed -n 's/public/PUBLIC/w data' test.in
    sed 's/[0-9][0-9]$/&.5/' datafiel:将两个数字结尾的行匹配成.5结尾 &表示被替换的字符串,就是说在原串结尾加.5

  • 相关阅读:
    近来感受
    GIT相关命令
    CMMI评审总结
    Windows下Git Bash的设置
    PHP学习三--常用运算符和结构语句
    PHP学习二--常量
    MYSQL基础十一--存储引擎
    MYSQL基础十--存储过程
    MYSQL基础九--自定义函数
    MYSQL基础八--子查询和连接
  • 原文地址:https://www.cnblogs.com/wsw-seu/p/8227943.html
Copyright © 2011-2022 走看看