1. 程式人生 > >2018-03-13 Linux學習

2018-03-13 Linux學習

Linux 學習

9.4 sed (上)

sed 工具 示例
    sed -n ‘5‘p test.txt
    sed -n ‘1,5‘p test.txt
    sed -n ‘1,$‘p test.txt
    sed -n ‘/root/‘p test.txt
    sed -n ‘/^1/‘p test.txt
    sed -n ‘in$‘p test.txt
    sed -n ‘/r..o/‘p test.txt
    sed -n ‘oo*‘p test.txt
    sed -e ‘1‘p -e ‘/111/‘p -n test.txt

    [root@aming-01 sed]# sed -n ‘/root/‘p test.txt 
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin

    [root@aming-01 sed]# sed -nr ‘/o+t/‘p test.txt 
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin

    [root@aming-01 sed]# sed -n ‘2,5‘p test.txt 
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

    [root@aming-01 sed]# sed -n ‘1,$‘p test.txt

    [root@aming-01 sed]# sed -n ‘/^s/‘p test.txt 
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

    [root@aming-01 sed]# sed -e ‘1‘p -e ‘/bus/‘p -n test.txt 
    root:x:0:0:root:/root:/bin/bash
    dbus:x:81:81:System message bus:/:/sbin/nologin

    [root@aming-01 sed]# sed -e ‘1‘p -e ‘/bus/‘p -e ‘/lp/‘p -n test.txt 
    root:x:0:0:root:/root:/bin/bash
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin

9.5 sed (下)

-n   使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN 的數據一般都會被列出到屏幕上。但如果加上 -n 參數後,則只有經過 sed 特殊處理的那一行(或者動作)才會被列出來。
-p   打印
-I   不區分大小寫
-d   刪除
-i   修改文件內容
-r   加 -r 特殊符號不需要加 \ 脫義
s/a/b/g  全部替換
s/a/b/   替換第一個匹配的
&    代表前面的小括號

    sed 示例
    sed ‘1‘d test.txt
    sed ‘1,10‘d test.txt
    sed ‘/oot/‘d test.txt
    sed ‘1,2s/ot/to/g‘ test.txt
    sed ‘s#ot#ss#g‘ test.txt
    sed ‘s/[0-9]//g‘ test.txt
    sed ‘s/[a-zA-Z]//g‘ test.txt
    sed -r ‘s/(rot)(.*)(bash)/\3\2\1/‘ test.txt
    sed ‘s/^.*$/123&/‘ test.txt
    sed -i ‘s/ot/ss/g‘ test.txt

        [root@aming-01 sed]# sed -n ‘/user/‘Ip test.txt 
        ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        polkitd:x:999:997:User for polkitd:/:/sbin/nologin

        [root@aming-01 sed]# sed ‘1,18‘d test.txt 
        bacula:x:133:133:Bacula Backup System:/var/spool/bacula:/sbin/nologin
        apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

        [root@aming-01 sed]# head -3 test.txt|sed -r ‘s/roo/aaa/‘
        aaat:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin

        [root@aming-01 sed]# head -3 test.txt|sed -r ‘s/roo/aaa/g‘
        aaat:x:0:0:aaat:/aaat:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin

        [root@aming-01 sed]# sed ‘s#ot#ss#g‘ test.txt 
        ross:x:0:0:ross:/ross:/bin/bash

        [root@aming-01 sed]# sed ‘s/[0-9]//g‘ test.txt 
        root:x:::root:/root:/bin/bash
        bin:x:::bin:/bin:/sbin/nologin

        [root@aming-01 sed]# sed ‘s/[a-zA-Z]//g‘ test.txt 
        ::0:0::/://
        ::1:1::/://
        ::2:2::/://

        [root@aming-01 sed]# head -3 test.txt|sed -r ‘s/([^:]+):(.*):([^:]+)/\3!\2!\1/‘
        /bin/bash!x:0:0:root:/root!root
        /sbin/nologin!x:1:1:bin:/bin!bin
        /sbin/nologin!x:2:2:daemon:/sbin!daemon

        [root@aming-01 sed]# head -3 test.txt|sed -r ‘s/(.*)/aaa:&/‘
        aaa:root:x:0:0:root:/root:/bin/bash
        aaa:bin:x:1:1:bin:/bin:/sbin/nologin
        aaa:daemon:x:2:2:daemon:/sbin:/sbin/nologin

2018-03-13 Linux學習