zoukankan      html  css  js  c++  java
  • Linux学习-Sed 命令

    sed 命令

    • sed 的模式空间

      • sed 工作方式

        • 将文件以行为单位读取到内存(模式空间)
        • 使用 sed 的每个脚本对改行进行操作
        • 处理完成后输出该行
      • sed 的替换命令 s:

        • sed 's/old/new/' filename
        • sed -e 's/old/new/' -e 's/old/new/' filename -e 表示多个文件进行操作
          • 可简写:sed 's/old/new/;s/old/new/' afile bfile ...
        • sed -i 's/old/new/' 's/old/new/' filename -i 表示替换完后原样的写回原文件
      • 带正则表达式的替换命令s:

        • sed 's/正则表达式/new' filename
        • sed -r 's/扩展正则表达式/new' filename
          • sed '/s/(aa)|(bb)/!' filename 匹配分组,aa或bb
          • +符号也属于扩展表达
      • 若被替换的内容中含斜线,可以把分隔符换成其他字符

        • sed 's!/!abc!' filename
      • sed 的回调用法

        • bfile 的内容:axyzb
        • sed -r 's/a.*b/1 1/' bfile 输出:axyzb axyzb
          上面 1代表对a.*b调用,若有两组数要调用,则写成 1 2
    • sed 命令加强版

      • 全局替换

        • s/old/new/g g为全局替换,用于替换所有出现的次数
        • “/” 如果和正则匹配的内容有所冲突,可换为其它符号,如 “!”
      • s/old/new/标志位

        • s/old/new/2、s/old/new/3,后面的数字表示匹配第几个,第一个默认不写
        • g,全局替换
        • p 打印模式空间的内容
          • sed -n 'script' filename 阻止默认输出
          • sed -n 's/root/!!!!/p' 只输出匹配成功的这一行
        • w file 将模式空间的内容写入到文件
          • sed -n 's/root/!!!!/w /tmp/a.txt'
      • 寻址

        • 默认对每行进行操作,增加寻址后对匹配的行进行操作
          • /正则表达式/s/old/new/g
          • 行号s/old/new/g 行号可以是具体某一行,也可以是最后一行 $ 符号
            • sed '1,3s/old/new/' 1到3行
            • sed '1,$s/old/new/' 1到最后一行
            • sed '/root/s/old/new/' 在root这一行进行匹配替换
          • 可以使用两个寻址符号,也可以混合使用行号和正则表达式
            • sed '/^bin/,$s/old/new/' 以bin开头,到这行结尾进行匹配替换
          • 寻址可以匹配多条命令
            • /regular/{s/old/new/;s/old/new/}
      • sed 脚本文件

        • sed -f sedscript filename
    • sed 的其他命令

      • 删除命令: [寻址]d 删除模式空间的内容,改变脚本的控制流,读取新的输入行,意味着d后面的指令是不会执行的。

        • sed '/ab/d' afile 注意,匹配到ab时,d 指令是删除整一行
      • 追加插入和更改:a 追加,i 插入,c 更改

        • sed '/ab/i hello' afile 在afie文件匹配到ab,则在ab所在行的上一行插入hello;把i改为a,则是在下一行进行插入;改成c,则把匹配的所在行改写成指定字符串
        • sed '/ab/r afile' bfile 将文件afile中的内容,匹配到ab的行,读取到bfile文件中;r命令改为w,则变成写入;在整个语句后面使用">",则会保存到一个新文件中。
      • 退出命令q与打印p,哪个效率更高

        • sed '10q' filename 读取文件的前十行,然后退出
        • sed -n '1,10p' filename 读取文件的前十行进行打印,然后退出
        • 因为sed的工作模式是逐行读取到内存再操作,'10q',是一次性读取,然后退出;'1,10p'是10行逐行读取后,再操作,最后退出;
    • sed 的多行模式

      • 多行模式处理命令:N,D,P
      • 为了应对配置文件是多行的情况
      • N:将下一行追加到模式空间
      • D:删除模式空间中的第一个字符到第一个换行符
      • P:打印模式空间中的第一个字符到第一个换行符
      • .符号在 sed 中支持多行模式,可以替代
  • 相关阅读:
    我的2015---找寻真实的自己
    JQuery日记 5.31 JQuery对象的生成
    UVA
    elk 日志分析系统Logstash+ElasticSearch+Kibana4
    OAF 中下载使用XML Publisher下载PDF附件
    page上BeanId与ActionType中的ParameterId
    OAF 功能中的参数含义
    EBS管理员为供应商创建新联系人流程
    EBS Workflow参考资料
    采购模块设置快码
  • 原文地址:https://www.cnblogs.com/chenri/p/12702411.html
Copyright © 2011-2022 走看看