sed:语法命令学习

来源:互联网 发布:淘宝卖家漏发货怎么办 编辑:程序博客网 时间:2024/06/06 03:20

一、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]




0 0
原创粉丝点击