您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“sed命令的使用方法有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“sed命令的使用方法有哪些”吧!
sed是一種在線編輯器,它一次處理一行內(nèi)容。處理時,把當前處理的行存儲在臨時緩沖區(qū)中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區(qū)中的內(nèi)容,處理完成后,把緩沖區(qū)的內(nèi)容送往屏幕。
?
使用sed可以實現(xiàn)grep的大部分功能,而且還可以查找替換。
sed [options] ‘command’ filename
sed [options] -f scriptfile filename
Options:
-n:-n選項和p命令一起使用表示打印
-e:等價于–expression,多點編輯,在一行執(zhí)行多條命令
用sed實現(xiàn)匹配(grep)功能=打印有root字符串的行
[root@cham2 sed]# sed -n '/root/'p test.txtroot:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@cham2 sed]# sed -nr '/r+o/'p test.txtroot:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin chrony:x:997:995::/var/lib/chrony:/sbin/nologin [root@cham2 sed]# sed -nr '/o*t/'p test.txtroot:x:0:0:root:/root:/bin/bash shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halo1t:/sbin:/sbin/halt operator:x:11:0:operator:/root:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:998:996:User for polkitd:/:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
[root@cham2 sed]# sed -n '/nologin/'Ip test.txtbin:x:1:1:bin:/bin:/sbin/NOLOGIN daemon:x:2:2:daemon:/sbin:/sbin/nologin ad11om:x:3:4:ad1om:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spoool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spoooooool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:998:996:User for polkitd:/:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin chrony:x:997:995::/var/lib/chrony:/sbin/nologin
[root@cham2 sed]# sed -n '2'p test.txtbin:x:1:1:bin:/bin:/sbin/NOLOGIN [root@cham2 sed]# sed -n '2,5'p test.txtbin:x:1:1:bin:/bin:/sbin/NOLOGIN dfsdfdsfsdfs:1241124:jksdfhdskjf:sfdsf:rao:325345345 222222:r.o:dfdsfdsg daemon:x:2:2:daemon:/sbin:/sbin/nologin [root@cham2 sed]# sed -n '15,$'p test.txtnobody:x:99:99:Nobody:/:/sbin/nologin systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:998:996:User for polkitd:/:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin chrony:x:997:995::/var/lib/chrony:/sbin/nologin
[root@cham2 sed]# sed -e '1'p -e '/bus/'p -n test.txtroot:x:0:0:root:/root:/bin/bash systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin [root@cham2 sed]# sed -e '1'p -e '/root/'p -n test.txtroot:x:0:0:root:/root:/bin/bash root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
說明 “sed -e ‘1’p -e ‘/bus/’p -n test.txt”該命令的意思是:打印第一行,同時也打印出匹配有‘bus’的行。當打印的內(nèi)容和匹配的內(nèi)容相同時,會分別顯示,即:兩個命令同時進行但相對獨立。
[root@cham2 sed]# sed '1,10'd test.txtmail:x:8:12:mail:/var/spoooooool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:998:996:User for polkitd:/:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin chrony:x:997:995::/var/lib/chrony:/sbin/nologin [root@cham2 sed]# sed '1,18'd test.txtpolkitd:x:998:996:User for polkitd:/:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin chrony:x:997:995::/var/lib/chrony:/sbin/nologin
注: 這種方法并不會刪除文件的內(nèi)容,知識打印在屏幕上的內(nèi)容刪除了指定行。那么如何直接刪除文件中指定的內(nèi)容呢?如下:
[root@cham2 sed]# wc -l test.txt23 test.txt [root@cham2 sed]# sed -i '1,20'd test.txt[root@cham2 sed]# wc -l test.txt3 test.txt [root@cham2 sed]# cat test.txtpostfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin chrony:x:997:995::/var/lib/chrony:/sbin/nologin [root@cham2 sed]# sed -i '/SSH/'d test.txt[root@cham2 sed]# cat test.txtpostfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:997:995::/var/lib/chrony:/sbin/nologin
查找替換(s) 類似于vim中的查找替換
[root@cham2 sed]# sed '1,10s/root/toor/g' test.txttoor:x:0:0:toor:/toor:/bin/bash bin:x:1:1:bin:/bin:/sbin/NOLOGIN dfsdfdsfsdfs:1241124:jksdfhdskjf:sfdsf:rao:325345345 222222:r.o:dfdsfdsg daemon:x:2:2:daemon:/sbin:/sbin/nologin ad11om:x:3:4:ad1om:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spoool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halo1t:/sbin:/sbin/halt mail:x:8:12:mail:/var/spoooooool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:998:996:User for polkitd:/:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin chrony:x:997:995::/var/lib/chrony:/sbin/nologin 此處如果不使用head命令,將會顯示test.txt全部內(nèi)容。 [root@cham2 sed]# sed '1,10s/root/toor/g' test.txt | head -3toor:x:0:0:toor:/toor:/bin/bash bin:x:1:1:bin:/bin:/sbin/NOLOGIN dfsdfdsfsdfs:1241124:jksdfhdskjf:sfdsf:rao:325345345 [root@cham2 sed]# cat test.txt | head -3root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/NOLOGIN dfsdfdsfsdfs:1241124:jksdfhdskjf:sfdsf:rao:325345345
替換每行第一個字符串和最后一個字符串的位置:
[root@cham2 sed]# head -3 test.txtroot:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/NOLOGIN dfsdfdsfsdfs:1241124:jksdfhdskjf:sfdsf:rao:325345345 [root@cham2 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 325345345:1241124:jksdfhdskjf:sfdsf:rao:dfsdfdsfsdfs
說明: 小括號內(nèi)的字符串可以用反斜杠跟數(shù)字組合按順序來代替。
在每一行行首添加指定字符:
[root@cham2 sed]# head -3 test.txt | sed -r 's/(.*)/AB:\1/'AB:root:x:0:0:root:/root:/bin/bash AB:bin:x:1:1:bin:/bin:/sbin/NOLOGIN AB:dfsdfdsfsdfs:1241124:jksdfhdskjf:sfdsf:rao:325345345 [root@cham2 sed]# head -3 test.txt | sed -r 's/(.*)/AB:&/'AB:root:x:0:0:root:/root:/bin/bash AB:bin:x:1:1:bin:/bin:/sbin/NOLOGIN AB:dfsdfdsfsdfs:1241124:jksdfhdskjf:sfdsf:rao:325345345
說明: 在此&代表前面括號中的內(nèi)容=“\ 1”
到此,相信大家對“sed命令的使用方法有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。