shell脚本day06-sed

Linux文本处理三剑客----sed

sed streanm edite

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

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

一、sed的工作原理

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

二、sed用法

  选项:

    -n

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

      匹配IP

      1、所有的都不要

      2、|或者

    -e script for while if

    -f //指定脚本文件

    -i 指定文本换行长度

    -l 直接修改文件内容(建议不要使用)

  地址定界方法:

    1、直接匹配数值

      sed -n '5,7p' 文件

    2、d~步长

      sed -n '1~3p' 文件

    3、$指定步长

      sed -n '10,$p' 文件

    4、/正则/

      /正则1/,/正则2/

      sed -n '/o{5}/,$p' 文件名.sh

    5.0,addr

      addr 可以为数字/ $/正则 

    6.addr,+n

      匹配addr行到addr后N行

      sed -n '/fd.,+5p' as

三、常用命令

  p print 打印(默认显示到屏幕) 建议和-n一起使用;

  c替换行

  d 删除  sed "1~3" as

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

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

    sed "/PATTERN/w 新文件名"  源文件名

    sed "s/a/bb/gw /root/as2" as 只保留修改内容到新文件中

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

    语法格式:s/pattern/字符串

      中间的斜杠可以替换为任意字符

      sed"s/sf/aa" as

    g globle sed "s/a/bb/g" as

    12和正则表达式的分组相同,实现反向引用;

      指定某一个匹配项进行修改

    & 调用前面匹配到的内容

      grep "testbash" /etc/passwd | sed"s/^test.*/&er/g"

原文地址:https://www.cnblogs.com/ljx1/p/11390664.html