linux中sed學習小結

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章