sed mage讲义

sed:Stream Editor,行编辑器:一次只处理一行文本,不会编辑修改原文件,每处理一行文本都会将文本复制到patternspace:模式空间中处理

        用法:sed [option] ...  'script' inputfile ...

            script:

                        '地址命令'

            常用选项

            -n         --quiet, --silent

                        不输出模式中的内容到屏幕

            -e         多点编辑操作

            -f  /PATH/TO/SCRIPT_FILE          从指定的文件中读取编辑脚本

            -r          使用扩展正则表达式

            -i          原处编辑修改源文件

            地址定界:

                        1.不给地址:对全文进行处理

                        2.单地址:

                                    #:指定的行

                                    /parrert/:被模式所够匹配到的每一行

                        3.地址范围:

                                    #,#

                                    #,+#

                                    /pat1/,/pat2/

                                    #,/pat1/

                        4.~:步进

                                    显示奇数行:

                                    [root@node110 sed]# sed -n '1~2p' simple.txt

                                                1-wordmatching using:the

                                                3-wordmatching using:they

                                    显示偶数行

                                    [root@node110sed]# sed -n '2~2p' simple.txt

                                                2-wordmatching using:thethe

            编辑命令

                        d:         删除符合条件的行

                        [root@Testsed]# sed '/^proc/d' /etc/fstab       #删除proc开头的行

                        [root@Testsed]# sed '/^$/d' /etc/fstab                         #删除空白行

                        p:        打印模式空间中的内容,打印模式空间中能够匹配的内容

                        [root@Testsed]# sed -n  '/^proc/p' /etc/fstab #只输出能匹配的行

                        [root@Testsed]# sed '/^proc/d' /etc/fstab        #与上面的显示相反

                        a\'text'            在每个符合条件的行后追加text文本(append),支持使用\n实现多行追加

                        [root@Testsed]# sed  '/^proc/a \"#hellosed"' fstab #在匹配的行后追加一行

                        [root@Testsed]# sed  '/^sysfs/a "#hellosed"\n#123' fstab #在匹配的行后追加多行

                        i\'text'             在每个符合条件的行前追加test文本(insert),支持使用\n实现多行追加

                        [root@Testsed]# sed  '/^sysfs/i "#hellosed"\n#123' fstab

                        c\'text'            change在每个符合条件的行替换为text的内容可以使用单行或多行

                        [root@Testsed]# sed  '/^sysfs/c "#hellosed"\n#123' fstab

                        w  filename     将符合条件的内容另存为一个文件

                        [root@Testsed]# sed  '/^proc/w sed_w' fstab

                        =   为模式空间中的行打印行号

                        [root@Test sed]# sed '/^proc/=' fstab

                        r/path/from/sofefile: 在文件插入指定文件的内容,

                        [root@Testsed]# sed '6r /etc/issue' fstab          #fstab文件的第6行后插入/etc/issue文件的内容

                       !取反操作:对地址定界取反

                        [root@Test sed]# sed -n '/^proc/!p' fstab

                        s///查找替换可以使用其它分隔符s###   s@@@

                                    替换标记

                                                g:行内全局替换

                                                i:忽略字母的大小写

                                                p:显示替换成功的行

                                                w/PATH/TO/SOMEFILE            #将匹配替换后的结果显示在指定的文件中

                        [root@Testsed]# sed 's@^sysfs@Sysfs@' fstab             #sysfs开头的字符串替换为Sysfs 

                        [root@node110sed]# sed 's@r..t@&er@' /etc/passwd   #&符号引用前面正则匹配到的所有的内容

                        [root@node110sed]# sed -n 's@\(r..t\)@\1er@p' /etc/passwd #\1也是引用小括号内正则匹配到的所有内容

                        [root@node110sed]# sed -n 's@r..t@&er@p' /etc/passwd

                       

高级编辑命令

                        holdspace保持空间   

                        patternspace:模式空间

                       

                        h:把模式空间中的内容覆盖至保持空间中

                        H:把模式空间的内容追加到保持空间中

                        g:(get)从保持空间取出数据覆盖至模式空间

                        G:从保持空间取出内容追加到模式空间

                        x:把模式空间中的内容与保持空间中的内容进行互换

                        n:读取匹配到的行的下一行至模式空间

                        N:追加匹配到的行的下一行至模式空间

                        d:删除模式空间中的行:

                        D:删除多行模式空间中的所有行

                       

                        显示偶数行

                        [root@node110sed]# cat simple.txt

                        1-wordmatching using:the

                        2-wordmatching using:thethe

                        3-wordmatching using:they

                        [root@node110sed]# sed -n 'n;p' simple.txt

                        2-wordmatching using:thethe

           

                        逆向显示文件内容

                        [root@node110sed]# sed '1!G;h;$!d' simple.txt

                        3-wordmatching using:they

                        2-wordmatching using:thethe

                        1-wordmatching using:the

           

                        显示文件的后两行:

                        [root@node110sed]# sed '$!N;$!D' simple.txt

                        2-word matching using:thethe

                        3-wordmatching using:they

                       

                        取文件的最后一行

                        [root@node110sed]# sed '$!d' simple.txt

                        3-word matching using:they

 

                        每行后加一个空白行

                        [root@node110sed]# sed 'G' simple.txt

                        1-wordmatching using:the

 

                        2-wordmatching using:thethe

 

                        3-wordmatching using:they

                       

                        将多个空白行合并成一个空白行

                        [root@node110sed]# sed '/^$/d;G' simple.txt

                        1-wordmatching using:the

 

                        2-wordmatching using:thethe

 

                        3-wordmatching using:they

                       

                        取奇数行

                        [root@node110sed]# sed 'n;d' simple.txt

                        1-wordmatching using:the

                        3-wordmatching using:they

                       

                       

 

分割线
感谢打赏
江西数库信息技术有限公司
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS