sed -n '/a/'p 2.txt -n只顯示匹配的行,'/a/' 匹配內容 p打印linux
[root@glinux-01 ~]# cat 2.txt aaaa bbbb AAAA avavav 123 445ff [root@glinux-01 ~]# sed -n '/aa/'p 2.txt aaaa [root@glinux-01 ~]# sed -n '/a/'p 2.txt aaaa avavav [root@glinux-01 ~]# sed -n '/aa*/'p 2.txt aaaa avavav [root@glinux-01 ~]# sed -n '/aa?/'p 2.txt [root@glinux-01 ~]# sed -n '/a.a/'p 2.txt aaaa avavav
打印指定行bash
[root@glinux-01 ~]# sed -n '2,3'p 2.txt bbbb AAAA [root@glinux-01 ~]# sed -n '2,$'p 2.txt //打印2到最後一行 bbbb AAAA avavav 123 445ff
打印某行到某行之間全部行spa
[root@glinux-01 ~]# sed -n '/ert/,/123/'p lx1.txt ert fff ** [abcfd] 123
-e :選項容許在同一行裏執行多條命令code
[root@glinux-01 ~]# sed -n -e '2'p -e '3'p 2.txt bbbb AAAA
I 不區分大小寫字符串
[root@glinux-01 ~]# sed -n '/a/'Ip 2.txt aaaa AAAA avavav
d 刪除指定行,並將剩餘行顯示出來(只是屏幕上刪除,文件內容並未刪除,若是想刪除文件加- i)dva
[root@glinux-01 ~]# sed '1,3'd 2.txt avavav 123 445ff [root@glinux-01 ~]# cat 2.txt aaaa bbbb AAAA avavav 123 445ff
s///g 查找替換()擴展
[root@glinux-01 ~]# sed '1,$s/a/A/g' 2.txt//從第一行到最後一行替換a爲A AAAA bbbb AAAA AvAvAv 123 445ff
不加g表明只替換每行第一個a換成d 。加g表明替換每行中全部a換成dsed
[root@glinux-01 ~]# sed 's/a/d/g' 2.txt dddd bbbb AAAA dvdvdv 123 445ff [root@glinux-01 ~]# sed 's/a/d/' 2.txt daaa bbbb AAAA dvavav 123 445ff
不用-r的話, | & + (){}要轉義的file
不用-r的話, | & + 要轉義的 [root@glinux-01 ~]# sed -r '1,6s/a+/c/g' 2.txt c bbbb AAAA cvcvcv 123 445ff
s///g 中,/能夠用@#替換,方法
[root@glinux-01 ~]# sed 's//b/c/g' 2.txt sed:-e 表達式 #1,字符 6:「s」的未知選項 [root@glinux-01 ~]# sed 's/\/b/c/g' 2.txt aaaa cbbb AAAA avavav 123 445ff [root@glinux-01 ~]# sed 's@/b@c@g' 2.txt aaaa cbbb AAAA avavav 123 445ff
將每行前加上aaa: (.*)匹配全部 替換爲aaa:\1 (\1表明匹配出的第一個字符或用&)
注意:\1 只能匹配前面帶()的內容
[root@glinux-01 ~]# sed -r 's/(.*)/aaa:\1/' 2.txt aaa:aaaa aaa:/bbbb aaa:AAAA aaa:avavav aaa:123 aaa:445ff
首列和尾列替換s/([^:]+)(.*:)([^:]+)/\3\2\1/
([^:]+)匹配非:開頭內容 root 對應/1
(.*:)匹配以:結尾的內容 :x:0:0:root:/root: 對應/2
([^:]+)匹配非:開頭內容 /bin/bash 對應/3
符合匹配規則的內容,在下一次匹配時就不在匹配範圍內了
[root@glinux-01 ~]# head pw.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 /sbin/nologin:x:3:4:adm:/var/adm:adm /sbin/nologin:x:4:7:lp:/var/spool/lpd:lp /bin/sync:x:5:0:sync:/sbin:sync /sbin/shutdown:x:6:0:shutdown:/sbin:shutdown /sbin/halt:x:7:0:halt:/sbin:halt /sbin/nologin:x:8:12:mail:/var/spool/mail:mail /sbin/nologin:x:11:0:operator:/root:operator [root@glinux-01 ~]# head pw.txt root:x:0:0:root:/root:/bin/bash 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 sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin
sed中,
1. 把每一個單詞的第一個小寫字母變大寫:(&表示前面匹配的內容)
sed 's/\b[a-z]/\u&/g' filename
2. 把全部小寫變大寫:
sed 's/[a-z]/\u&/g' filename
3. 大寫變小寫:
sed 's/[A-Z]/\l&/g' filename
4. /b例子:
/\bm/ 匹配 "moon" 中的 'm'; /oo\b/ 不匹配 "moon" 中的 'oo',由於 'oo' 後面的 'n' 是一個單詞字符; /oon\b/ 匹配 "moon" 中的 'oon',由於 'oon' 位於字符串的末端,後面沒有單詞字符; /\w\b\w/ 不匹配任何字符,由於單詞字符以後毫不會同時緊跟着非單詞字符和單詞字符。
5 sed在文件中某一行最後添加一個數字
[root@g_linux01 ~]# sed 's/^e.*/& 12/' lx1.txt //匹配以e開頭的詞,並在其後加 12 ert 12 fff ** [abcfd] 123 324 444 [rty] ** fgfgf [] ____ !@# eq 12 qe er 12 方法2: [root@g_linux01 ~]# sed '/^e/s/$/ 12/' lx1.txt //匹配以e開頭的詞,在末尾添加 12 (^表示在開頭$末尾) ert 12 fff ** [abcfd] 123 324 444 [rty] ** fgfgf [] ____ !@# eq 12 qe er 12
打印1到100行包含某個字符串的行
sed -n '1,100{/abc/p}' 1.txt