使用:sed [-nefr] action
action:-i直接修改讀取的檔案內容,而不是由屏幕輸出,-r表示支持延伸型正則表達式的語法。
動做說明:[n1[,n2]] function n1,n2表示要選擇的行數,function包括:
a-新增,c-取代,d-刪除,i-插入,p-打印,s-取代(能夠直接進行取代的工做,例如 1,20s/old/new/g)正則表達式
1 替換第一個匹配的內容spa
[root@limt01 ~]# echo " This is a test1 test2"|sed 's/test/TEST/' This is a TEST1 test2
2 替換全部匹配的內容code
[root@limt01 ~]# echo " This is a test1 test2"|sed 's/test/TEST/g' This is a TEST1 TEST2
3 -i 直接修改源文件blog
sed -i 「s/my/Rango Chen's/g」 pets.txt
4 在每一行最前面加上#字符串
[root@limt01 ~]# sed 's/^/#/g' pets.txt #This is my cat #my cat's name is betty #This is my dog #my dog's name is frank #This is my fish #my fish's name is george #This is my goat #my goat's name is adam
5 在每一行的末尾加上---io
[root@limt01 ~]# sed 's/$/ --- /g' pets.txt This is my cat --- my cat's name is betty --- This is my dog --- my dog's name is frank --- This is my fish --- my fish's name is george --- This is my goat ---
6 只替換第3到第6行的文本function
[root@limt01 ~]# sed "3,6s/my/your/g" pets.txt This is my cat my cat's name is betty This is your dog your dog's name is frank This is your fish your fish's name is george This is my goat my goat's name is adam
7 只替換第3行的文本class
[root@limt01 ~]# sed "3s/my/your/g" pets.txt This is my cat my cat's name is betty This is your dog my dog's name is frank This is my fish my fish's name is george This is my goat my goat's name is adam
8 只替換每一行的第二個stest
sed 's/s/S/2' my.txt 2表示第二個
9 一次替換多個模式,每一個模式之間用;進行間隔基礎
sed '1,3s/my/your/g; 3,$s/This/That/g' my.txt sed -e'1,3s/my/your/g' -e '3,$s/This/That/g' my.txt
基礎的正則表示法特殊字符:
^ 表示一行的開頭。如:/^#/ 以#開頭的匹配。$ 表示一行的結尾。如:/}$/ 以}結尾的匹配。\< 表示詞首。如\<abc 表示以abc 爲首的詞。\> 表示詞尾。如 abc\> 表示以abc 結尾的詞。\ 將特殊字符進行轉義,還原其自己意義:grep -n \' pets.txt 搜尋含有單引號'的那一行。. 表示任何單個字符。* 表示某個字符出現了0次或屢次。[ ] 字符集合。如:[abc]表示匹配a或b或c,還有[a-zA-Z]表示匹配全部的26個字符。若是其中有^表示取反,如[^a]表示非a的字符\{n,m\} 連續n到m個的「前一個RE字符」 grep -n 'go\{2,3\}g' 1.txt 在g與g之間有2到3個o存在的字符串,亦即(goog)(gooog)