zoukankan      html  css  js  c++  java
  • sed编辑器

    sed
    流编辑器 stream editer,是以行为单位的处理程序

    sed 流编辑器 stream editer

    语法
    sed [options] 'command' in_file[s]
    options 部分
    -n:静默模式,不打印默认输出
    -e:添加多条编辑规则
    -i:将修改后的输出内容保存到文件中
    -f:将编辑规则保存为文件的格式

    -r:使用扩展模式
    command 部分
    '[地址1,地址2] [函数] [参数(标记)]'

    定址的方法 1.数字 2.正则
    数字
    十进制数
    1 单行
    1,3 范围 从第一行到第三行
    2,+4 匹配行后若干行
    4,~3 从第四行到下一个3的倍数行
    2~3 第二行起每间隔三行的行
    $ 尾行
    1! 除了第一行以外的行
    正则
    正则必须用//包裹起来
    扩展正则需要用 -r 参数或转义

    数字定址:sed -n '1p' /etc/passwd

    正则定址:sed -n '/^root/p' /etc/passwd

    函数
    增删改
    a 后插
    c 替换整行
    i 前插
    d 删除
    输入输出
    p 打印匹配的行 一般和 -n 参数连用,以屏蔽默认输出
    r 从文件中读入
    w 写入到文件中
    控制流
    ! 命令取反 例: 1!d 删除第一行以外的行
    {} 命令组合 命令用分号分隔 {1h;G} 可以理解为 -e 参数的另一种写法

    = 打印行号(输入行的号码,而非处理的次数行号) 例如: sed -n '2{=;p}' infile
    n 读入下一行到模式空间 例:'4{n;d}' 删除第5行
    N 而是追加下一行到模式空间,再把当前行和下一行同时应用后面的命令

    s 字符串替换 s/old/new/

    () 保存被匹配的字符 以备反向引用N时使用 最多9个标签 标签顺序从左至右
    & 替换时使用,在不定义标签时使用(反向引用)

    $ sed -n 's/root/ABCDEF/p' /etc/passwd

    ABCDEF:x:0:0:root:/root:/bin/bash

    operator:x:11:0:operator:/ABCDEF:/sbin/nologin

    $ sed -n 's/root/ABCDEF/gp' /etc/passwd

    ABCDEF:x:0:0:ABCDEF:/ABCDEF:/bin/bash

    operator:x:11:0:operator:/ABCDEF:/sbin/nologin

    $ sed -n 's/root/ABCDEF/2p' /etc/passwd #将输入流中每一行的第二个root改为ABCDEF

    root:x:0:0:ABCDEF:/root:/bin/bash

    $ sed -n 's/root/ABCDEF/3p' /etc/passwd #将输入流中每一行的第三个root改为ABCDEF

    root:x:0:0:root:/ABCDEF:/bin/bash

    $ sed -n 's/root/ABCDEF/gp' /etc/passwd #将输入流中每一行的所有root改为ABCDEF

    ABCDEF:x:0:0:ABCDEF:/ABCDEF:/bin/bash

    operator:x:11:0:operator:/ABCDEF:/sbin/nologin

    将每一行中的第一个单词和随后的分隔符交换位置

    [root@myworld ~]# sed -r 's/^([a-Z]+)([^a-Z])/21/' test
    :rootx:0:0:root:/root:/bin/bash
    :binx:1:1:bin:/bin:/sbin/nologin #上肩号在小括号内或者小括号外不影响结果

    将每一行中的最后一个单词和随后的分隔符交换位置

    [root@myworld ~]# sed -r 's/([^a-Z])([a-Z]+)$/21/' test
    root:x:0:0:root:/root:/binbash/
    bin:x:1:1:bin:/bin:/sbinnologin/

  • 相关阅读:
    替代传统C/S和B/S技术的下一代客户/服务器编程技术
    理想的编程语言
    nginx进程模型
    Sybase 7.0 中文乱码问题
    netfilter 链接跟踪机制与NAT原理
    TraTraffic Server 进程模型
    nginx并发模型与traffic_server并发模型简单比较
    vs/nat原理分析
    ORACLE 查询表信息
    in 跟exists的区别
  • 原文地址:https://www.cnblogs.com/Icarus1900/p/7688879.html
Copyright © 2011-2022 走看看