linux-sed

作者: 点点渔火 | 来源:发表于2017-07-11 11:36 被阅读0次

    sed: Stream Editor文本编辑器,面向字符流, 一次处理一行内容,处理时,将当前处理行存储再临时缓存区中,称为"模式空间"(pattern space), 接着用sed命令处理缓存区的内容,处理完成后,将缓存区的内容送到屏幕,接着处理下一行,不断重复直到结尾。

    • sed命令格式:
      sed [option] 'sed command' filename

    • sed脚本格式:
      sed [option] -f 'sed script' filename

    • sed命令选项
      -n:只打印模式匹配的行(不然会全打出来)必须跟p
      -e: 直接在命令行模式上进行sed动作编辑(默认)
      -f: 执行script脚本
      -r: 支持扩展表达式
      -i: 直接修改原文件内容

    • sed定址

      • 行号:数字或者范围
    model summary
    x x为行号
    x,y 表示行号从x到y
    /pattern 查询包含模式的行
    /pattern /pattern 查询包含两个模式的行
    pattern/,x 在给定行号上查询包含模式的行
    x,/pattern/ 通过行号和模式查询匹配的行
    x,y! 查询不包含指定行号x和y的行 ! 表示反选
    • sed的编辑命令(sed command)
    model summary
    p 打印匹配行(和 -n 命令一个合用, 不然默认-e,缓存区的内容会重复输出)
    = 显示文件行号
    a\ 在定位行号后附加新文本信息
    i\ 在定位行号后插入新文本信息
    d 删除定位行(只是打印输出删除了,原文件没变)
    c|用新文本替换定位文本
    w filename 写文本到一个文件,类似输出重定向 >
    r filename 从另一个文件中读文本,类似输入重定向 <
    s 使用替换模式替换相应模式
    q 第一个模式匹配完成后退出或立即退出
    l 显示与八进制ACSII代码等价的控制符
    n 从另一个文件中读文本下一行,并从下一条命令而不是第一条命令开始对其的处理(啥意思??)
    N 在数据流中添加下一行以创建用于处理的多行组
    g 将模式2粘贴到/pattern n/
    y 传送字符,替换单个字符

    ——————————————————————————
    PS:
    linux文件输入输出重定向
    输出重定向:

    echo line > file
    echo line >> file   # 追加不覆盖
    

    重定向输入:

    wc -l < file   # 统计文件file的行数
    

    —————————————————————————

    栗子:

    sed -n '/client_timeout/p' conf  # 打印包含client_timeout的行
    sed -n '/client_timeout/,/hahaha/p' conf  # 两个pattern, 满足其一就打印
    sed -n '2, /client_timeout/p' conf # 从第2行到出现client_timeout的那行打印
    
    sed -n '-e /=/p' '-e =' test  # 打印包含=的行, 且打印行号
    
    
    
    
    
    
    
    
    修改配置文件conf的client_timeout值:
    sed -i '-e s/\(client_timeout : \).*/\1100/' '-e s/\r//g' "/home/conf"

    相关文章

      网友评论

          本文标题:linux-sed

          本文链接:https://www.haomeiwen.com/subject/rzkkhxtx.html