day18三劍客之sed
sed (stream editor 流編輯器)
sed的功能:增刪改查
sed 執(zhí)行過程
-n 取消默認(rèn)輸出
seq -n '3p' /oldboy/oldboy.txt
功能:增刪改查
1.查:p print(查看)
根據(jù)行號進(jìn)行查找
查看lidao.txt這個文件中第三行的內(nèi)容
[root@cuihua ~]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@cuihua ~]# sed -n '3p' lidao.txt
103,Alex,COO
根據(jù)行號范圍進(jìn)行查找
查看lidao.txt這個文件中第二行到第四行的內(nèi)容
[root@cuihua ~]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@cuihua ~]# sed -n '2,4p' lidao.txt
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
根據(jù)正則進(jìn)行過濾
查看lidao.txt文件中帶oldboy這個內(nèi)容的行
[root@cuihua ~]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@cuihua ~]# sed -rn '/oldboy/p' lidao.txt
101,oldboy,CEO
使用正則表示范圍
查看lidao.txt文件中帶102內(nèi)容的行到帶105內(nèi)容的行
[root@cuihua ~]# sed -n '/102/,/105/p' lidao.txt
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
2.增(類似>>)
參數(shù) a : append 在第幾行下增加內(nèi)容
在第二行下插入180,kangxu,QAQ
[root@cuihua ~]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@cuihua ~]# sed '2a180,kangxu,QAQ' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
111,kangxu,QAQ
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
參數(shù) i: 在第幾行上面增加內(nèi)容
在第二行上插入111,kangxu,QAQ
[root@cuihua~]# sed >'2i111,kangxu,QAQ' lidao.txt
101,oldboy,CEO
111,kangxu,QAQ
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
參數(shù) c :replac 先清空再寫入
把第二行內(nèi)容替換為111,kangxu,QAQ
[root@cuihua~]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@cuihua ~]# sed '2c111,kangxu,QAQ' lidao.txt
101,oldboy,CEO
180,kangxu,QAQ
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
3.刪
參數(shù) d:刪除
把第二行內(nèi)容刪除掉
[root@cuihua ~]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@cuihua ~]# sed '2d' lidao.txt
101,oldboy,CEO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
4.改
參數(shù)s:sub(默認(rèn)替換第一個字符) g(全局替換)
格式:sed 's###g'
把oldboy替換為oldgirl
[root@cuihua ~]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@cuihua ~]# sed 's#oldboy#oldgirl#g' lidao.txt
101,oldgirl,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
后向引用(在前面兩個(##)把你要的內(nèi)容保護(hù)起來后兩個(##)中間用\數(shù)字引用)
把123456 改為<123456>
[root@cuihua ~]# echo 123456 | sed -r 's#(.*)#<\1>#g'
<123456>
把123456 改為12<34>56
[root@cuihua ~]# echo 123456 | sed -r 's#(..)(..)(..)#\1<\2>\3#g'
12<34>56
把123456改為<1><2><3><4><5><6>
[roo