sed命令

1、Linux文本处理三剑客之 sed(Sed stream EDite)

  作为行编辑器,对文本进行编辑(以行为单位编辑)

  注意:sed编辑文件,却不改变原文件

2、Sed的工作原理:

  指定一个文本文件,依次读取文本文件中每行内容,读取到模式空间中(PATTERN SPACE),在模式空间中进行文本匹配,对匹配后的文本内容进行修改(替换、删除、打印、修改、保存)。

3、用法:

  sed [参数] “sed自己独立的用法格式语句”

sed [OPTION]... {script-only-if-no-other-script} [input-file]...

4、常见选项

   -n  不显示默认输出的内容

  -r  指定使用扩展的正则表达式

    匹配IP

       所有的都不要

      |或者

  -e  script  for while if

  -f  指定脚本文件

  -l  指定文本换行的长度?

5、地址定界方式

(1)直接匹配数值

    sed -n ‘5-7’

(2)d~步长

(3)$ 指定行尾

(4)/正则/

  /正则1/,/正则2/

    sed -n `/k{5,}/,$p` abc

    sed -n `^(fd)+/.+2p` abc //正则写在前面没有问题,但写在后面会出现问题

(5)0,addr

    addr可以为数字/$/正则表达式

    sed -n `0,/k{5,}/p` abc

(6)addr,+N

    配置addr行到,addr后N行

    sed -n `/fd/,+5p` abc

6、常见命令

  p  print 打印(默认在屏幕上显示出来),建议和-n一起使用;

  c  替换

    sed "/aaa/c A" a

  d  删除

    sed "/aaa/d" a

    sed "1,3d" a

  n  N读取/添加 模式匹配到的下一行内容,再对其进行操作;

  w  保存文件内容到一个新的文件

    sed "/patthen/w 新的文件名"y原来的文件名

    sed "/k/w /tmp/aabbcc" abc

  *s*文本内容替换,默认替换模式空间匹配到的第一项;

    语法格式: s/pattern/字符串/       //中间的/可以替换为任意一个特殊字符

    常见命令:g   全部

         12 h和正则表达式的分组相同,实现反向应用;(指定某一个匹配项进行修改替换)

         & d调用前面(pattern)匹配的内容

          sed "s/r..t/&er/g"w文件

原文地址:https://www.cnblogs.com/www-k/p/11379257.html