现在的位置: 首页 > 综合 > 正文

sed:语法命令学习

2018年10月02日 ⁄ 综合 ⁄ 共 1906字 ⁄ 字号 评论关闭

一、sed命令行语法

        sed [-n] [-e] 'command' file(s)

        sed -f scriptfile files(s)

二、sed命令语法

        [address[, address]] [!] command [arguments]

2.1 模式寻址

        1. 地址:

                可以是一个行号;

                或者是由斜杠包含着的一个模式(/pattern/),模式由正则表达式描述。

        2. 大括号{},分组命令:

                用于地址的嵌套或者对同一个地址应用多个命令。

                [/pattern/[, /pattern/]]{

                  command1

                  command2

                }

                左大括号必须在一行的末尾;  右大括号必须单独在一行;  大括号后面不能有空格。

        3. 注释:

                #[n]

                注释行作为脚本的第一行出现。

                注释行第一个字符必须是“#”号。

                #n,校本不会自动产生输出。  与选项-n等价。

2.2 sed中的正则表达式元字符

三、sed概念

3.1 模式空间 

        模式空间是一个临时缓冲区,当编辑命令时将在那里存储单个输入行。

        命令执行时,模式空间变化:

                s/Unix/UNIX/

                s/UNIX System/UNIX Operating System/

                1. 初始时,模式空间只有单个输入行的备份;

                2. 脚本第一个命令应用于这一行,将“Unix“替换成”UNIX“;

                3. 然后执行第二个命令,将”UNIX System“替换成”UNIX Operating System“;

                4. 注意:第二个替换命令不是匹配最初的输入行,它匹配模式空间中发生了变化的行。

                

3.2 保持空间

三、sed命令汇总

测试文件file:


3.1. 替换【s】

        [address[, address]]s/pattern/replacement/[flags]

3.2. 删除【d】

        [address[, address]]d

3.3. 追加【a】

        [address]a\

3.4. 插入【i】

        [address]i\

3.5. 更改【c】

        [address[, address]]c\

3.6. 列表【l】

        [address[, address]]l

3.7. 转换【y】

        [address[, address]]y/abc/xyz/

        按位置将字符串abc中的字符替换成xyz中的相应字符。

3.8. 打印【p】

        [address[, address]]p

3.9. 打印行号【=】

        [address[, address]]=

        将所寻址的行输出到标准输出。

3.10. 下一步【n】

        [address[, address]]n

3.11. 读文件【r】

        [address]r file

3.12. 写文件【w】

        [address[, address]]w file

3.13. 退出【q】

        [address]q

3.14. 追加下一行【N】

        [address[, address]]N

3.15. 多行模式空间删除【D】


        [address[, address]]D

3.16. 多行模式空间打印【P】

        [address[, address]]P

3.17. 模式空间复制到保持空间【h】

        [address[, address]]h

3.18. 模式空间追加到保持空间【H】

        [address[, address]]H

3.19. 保持空间复制到模式空间【g】

        [address[, address]]g

3.20. 保持空间追加到模式空间【G】

        [address[, address]]G

3.21. 交换保持空间与模式空间【x】

        [address[, address]]x

3.22. 标签【:】

        :label

        在脚本中标记一行,用于实现b或t的控制转移。

        label最多包含7个字符。

3.23. 分支【b】

        [address[, address]]b[label]

        无条件地将控制转移到脚本其他位置:label处。

        如果没有指定label,控制转移到脚本末端。

3.24. 测试【t】

        [address[, address]]t[label]

抱歉!评论已关闭.