Linux三劍客---sed命令
三劍客的功能
grep 過(guò)濾
sed 增刪改查 過(guò)濾犹菇,替換(修改)取行
awk 過(guò)濾,取列闹蒜,統(tǒng)計(jì)計(jì)算
grep參數(shù)補(bǔ)充
參數(shù)-l grep過(guò)濾的時(shí)候只顯示文件名寺枉,不顯示文件內(nèi)容
參數(shù)-R遞歸式進(jìn)行過(guò)濾
參數(shù)-A顯示grep找出的內(nèi)容,及接下來(lái)的幾行
參數(shù)-B顯示grep找出的內(nèi)容绷落,及以上的幾行
參數(shù)-C相當(dāng)于-A -B -C2=-A2 -B2
參數(shù)-c統(tǒng)計(jì)包含內(nèi)容的行數(shù)
sed steam editor 流編輯器
參數(shù)-n不顯示默認(rèn)輸出(sed命令查找默認(rèn)會(huì)把文件所有內(nèi)容輸出到屏幕)
參數(shù)-i修改文件內(nèi)容(加參數(shù)-i才真正修改文件內(nèi)容)
-i.bak先備份文件姥闪,在修改文件內(nèi)容
參數(shù)-r可以支持?jǐn)U展正則
查找 p print 查看 一般與-n一起使用
根據(jù)行號(hào)進(jìn)行查找
sed -n ‘5p’ 文件名 查找第5行
sed -n ‘5!p’ 文件名 不顯示第5換行
多行查找
sed -n ‘1,5p’ 文件名 查找第1到5行的內(nèi)容
使用正則查找
sed -n ‘/要查找的內(nèi)容/p’ 文件名
使用正則范圍查找
sed -n ‘/開(kāi)始查找的范圍/砌烁,/結(jié)束查找的范圍/p’ 文件名
[root@oldboyedu59 /oldboy]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
12306,nidaye,hh
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@oldboyedu59 /oldboy]# sed -n '5p' lidao.txt
104,yy,CFO
[root@oldboyedu59 /oldboy]# sed -n '5!p' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
12306,nidaye,hh
103,Alex,COO
105,feixue,CIO
110,lidao,COCO
[root@oldboyedu59 /oldboy]# sed -n '1,5p' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
12306,nidaye,hh
103,Alex,COO
104,yy,CFO
[root@oldboyedu59 /oldboy]# sed -nr '/oldboy/p' lidao.txt
101,oldboy,CEO
[root@oldboyedu59 /oldboy]# sed -nr '/oldboy/,/Alex/p' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
12306,nidaye,hh
103,Alex,COO
增加 a append 追加
sed ‘3a要插入的信息’ 文件名 在第三行的下面追加1行
i insert 插入
sed ‘3i要插入的信息’ 文件名 在第三行的上面插入1行
c replace
sed ‘3c要插入的信息’ 文件名 先清空第3行的內(nèi)容筐喳,然后在寫入
[root@oldboyedu59 /oldboy]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
12306,nidaye,hh
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@oldboyedu59 /oldboy]# sed '3aoldboy' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
12306,nidaye,hh
oldboy
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@oldboyedu59 /oldboy]# sed '3ioldboy' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
oldboy
12306,nidaye,hh
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@oldboyedu59 /oldboy]# sed '3coldboy' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
oldboy
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
刪除 d delete 刪除
sed ‘3d’ 文件名 刪除文件的第3行內(nèi)容
[root@oldboyedu59 /oldboy]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
12306,nidaye,hh
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@oldboyedu59 /oldboy]# sed '3d' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
修改 s 簡(jiǎn)寫sub
sed ‘s###g’ 文件名 全局替換
s 替換 g global全局
sed默認(rèn)替換每一行的第一個(gè)內(nèi)容(匹配到的第一個(gè)內(nèi)容)催式,如果有g(shù)則進(jìn)行全局替換,替換每一行中匹配到的內(nèi)容
在前面(##)之間的內(nèi)容避归,通過(guò)()小括號(hào)保護(hù)起來(lái)(整合成一個(gè)整體)荣月,
在后面(##)之間通過(guò)(\數(shù)字)來(lái)使用(第幾個(gè)小括號(hào),數(shù)字就是幾)
echo 123456|sed -r 's#(.*)#<\1>#g'
<123456>