sed行處理工具
1、顯示檔案中比對行
cat tmp.txt|sed -n '/比對字元正則/p' (-n是不列印全部檔案)
2、顯示檔案第幾行
cat tmp.txt|sed -n '1p' --第一行--
cat tmp.txt|sed -n '1,3p' --一到三行--
3、替換檔案中字元
cat tmp.txt | sed 's/ee/ff/' 或者 sed 's/ee/ff/' tmp.txt --将tmp.txt檔案中每行第一個比對的ee替換為ff,不改變原檔案--
cat tmp.txt | sed 's/ee/ff/g' 或者 sed 's/ee/ff/g' tmp.txt --将tmp.txt檔案中,全部ee替換為ff,不改變原檔案--sed 's/ee/ff/' tmp.txt > tmp2.txt --将tmp.txt檔案中ee替換為ff,不改變原檔案,新生成一個新的tmp2.txt檔案--
改變原檔案:sed -i 's/ee/ff/' tmp.txt
4、指定行替換
cat tmp.txt |sed '3,5s/ee/ff/' --将檔案中3到5行替換ee為ff--
5、比對行的替換
cat tmp.txt | sed '/^w/s/ee/ff/' --将tmp.txt檔案中,以w開頭行中的ee替換為ff--
cat tmp.txt | sed '/^w/,/^x/s/ee/ff/' --将tmp.txt檔案中,以w開頭到x開頭之間的行的ee替換為ff--
6、批量重命名檔案名例有檔案:
aa.txt bb.txt cc.txt 将其重命為aa.jpg bb.jpg cc.jpg
ls |sed 's/\(.*\)\.txt/mv \1\.txt \1\.jpg/'|sh
\( )\為記憶體空間,将比對的aa bb cc記錄下來,\1為記憶體空間的第一個比對生成mv的指令代碼,通過sh執行--
7、删除比對行--不顯示出來,不修改源檔案
隻删除第二行:$ sed '2 d' employee.txt
删除1到4行:$ sed '1,4 d' employee.txt
删除從第二行到最後一行:$ sed '2,$ d' employee.txt
隻删除奇數行:$ sed '1~2 d' employee.txt
删除所有包含'Manager'的行:$ sed '/Manager/ d' employee.txt
删除第一次包含'Jason'的行到第四行:$ sed '/Jason/,4 d' employee.txt
删除從第一次比對'Raj'的行 到比對'Jane'之間的行:$ sed '/Raj/,/Jane/ d' employee.txt
删除比對'Jason'的行及它下面兩行:$ sed '/Jason/,+2 d' employee.txt
一些有用的删除例子
從一個檔案删除所有空行:sed '/^$/ d' employee.txt
删除所有注釋行(假設注釋以#開頭):sed '/^#/ d' employee.txt
本文轉自追光的貓部落格51CTO部落格,原文連結http://blog.51cto.com/ql0722/1614750如需轉載請自行聯系原作者
00_yatou