sed语句

sed命令
  Linux文本处理三剑客 之 sed
  sed stream EDite
    作为行编辑器,对文本进行编辑(以行为单位进行编辑)
    注意:sed编辑文件,却不改变原文件;

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

  用法:
    sed [OPTION]... {script-only-if-no-other-script} [input-file]...
    sed [参数] “sed自己独立的用法格式的语句”[文本文件]

  常见选项
    -n 拒绝默认显示
    -r 指定使用扩展的正则表达式
      匹配IP
      1、所有的 \ 都不要 2、 | 或者
    -e script for while if
    -f 指定脚本文件
    -l 指定文本换行的长度?
    -i 直接修改文件内容(不要使用)

  地址定界方式
    1、直接匹配数值
      sed -n '5p' 文件
    2、 d~步长
      sed -n '1~3p' 文件
    3、$ 指定行尾
      sed -n '10,$p' 文件
    4、/正则/
      /正则1/,/正则2/
        sed -n '/k\{5,\}/,$p' abc
        sed -n '/\(fd\)\+/,+2p' abc ? 正则写在前面就没有问题,写在后面就有问题
        sed -n '
    5、0,addr
      addr 可以为 数字/$/正则表达式
      sed -n '0,/k\{5,\}/p' abc
    6、addr,+N
      配置addr行到,addr后N行
      sed -n '/fd/,+5p' abc

    **常见命令
      p print 打印(默认在屏幕上显示出来) 建议和 -n 一起使用;
      c 替换
        sed "/aaa/c \A" a
      d 删除
        sed "/aaa/d" a
        sed "1,3d" a
      n N 读取/添加 模式匹配到的行的下一行内容,再对其进行操作
      w 保存文件内容到一个新的文件
        sed "/patthen/w 新的文件名" 原来的文件名
        sed "/k/w /tmp/aabbcc" abc
      *s* 文本内容替换,默认替换模式空间匹配到的第一项;
        语法格式: s/pattern/字符串/
          中间的 / 可以替换为任意一个特殊字符 例如:s### s@@@ s%%%%
        g 全部
        \1 \2 和正则表达式的分组相同,实现反向应用;
          指定某一个匹配项进行修改替换
        & 调用前面(pattern)匹配的内容
          sed "s/r..t/&er/g" 文件
        w
        p

  sed的高级应用
    模式空间 -- hold space"占有空间"
    以后自己取学习

练习:
删除/boot/grub/grub.conf文件中所有空白开头的行行首的空白字符;
  sed 's/^[[:space:]]\+//g' /boot/grub/grub.conf
删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行 的行首的#和空白字符;
  sed 's/^#[[:space:]]\+//g' /etc/fstab
给定一个目录,取出其目录名
  echo "/etc/passwd" | sed 's/[^/]\+$//'
给定一个目录,取出其文件名
  echo "/etc/passwd" | sed 's#^/.*/\(.*\)##

  /var/log/message
  sed '/[^/]\+/'

  dirname -- 取出文件路径的路径部分
  basename -- 取出文件路径的文件名部分

 

转载于:https://www.cnblogs.com/wangzijie123456/p/11375170.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值