首页 > 代码库 > sed命令

sed命令

    sed命令是流编辑器。

工作流程是:每次将相应的行==》模式空间(内存中)==》模式匹配在处理==》将模式空间里的内容输出到屏幕。

注:sed命令默认不处理原数据,而是处理原数据的副本。


    用法

        格式:sed ‘AddressCommand’ file

        对指定文件中符合Address(地址筛选的行)进行Command(命令处理)

        

        Address支持的用法:

            1,起始行,结束行。例‘1,,100’(1到100行)

            2,/正则匹配/ 支持正则模式匹配。里‘/^root/’(以root为行首的行)

            3,/正则匹配1/,/正则匹配2/ 表示被模1式匹配到的行开始到被模式2匹配到的行

            4,行号 精确匹配到某行,$表示最后一行。例‘1’(第一行)

            5,起始行,+n 从起始行开始,到之后的N行

        

        Command用法:

            d:删除符合条件的行。 例 sed ‘1,2d‘ /etc/passwd(删除/etc/passwd中的第一到第二行)                                sed ‘/^root/d‘ /etc/passwd(删除/etc/passwd中root为行首的行)                                sed ‘/^\//d‘ /etc/passwd(删除etc/passwd中/开头的行,\为转意)             p:显示符合条件的行。例 sed ‘/^\//p‘ /etc/passwd(显示etc/passwd中/开头的行)

            a(apend) /string:在指定的行后追加字符串string新行,\n表示换行

            i(insert) /string:在指定的前插入字符串string新行,\n表示换行

            r file:将指定的文件的内容添加至符合条件的行处

            w file:将指定的范围内的内容另存(会保存)到指定的文件中

            s 查找并替换:将匹配到的内容进行替换

               用法 sed ‘s/查找内容(支持正则)/替换内容(字符串,不支持正则)/修饰符‘file 。在每行中默认只替换在该行中第一次匹配到的内容。 

               修饰符:g 全局替换。i 忽略大小写。

                注:在s命令中,只要三个分割符一样,大部分符号都可以作为分隔符,这样可以在匹配冲突时换分隔符避免使用转移符

                例:sed ‘s#\(l..e\)#\1r#g‘ 文件名。或 sed ‘s#l..e#$r#g‘ 文件名

            $:为引用模式匹配的所有内容。

            $与后向引用的差别:只引用匹配内容中的一部分内容是,只能用后向引用。

            例: sed ‘s#l\(..e\)#L\1#g‘ 文件名



        sed命令选项:

            -h:禁默模式,不在显示模式空间的内容

            -i:直接修改原文件

            -e:同时执行多个脚本 -e 地址命令 -e 地址命令 ...

            -f 指定文件:sed -f /path/scripts file 表示脚本里的内容出来文件

            -r:支持扩展正则

本文出自 “12955123” 博客,请务必保留此出处http://12965123.blog.51cto.com/12955123/1934212

sed命令