使用:sed [-nefr] action
action:-i直接修改读取的档案内容,而不是由屏幕输出,-r表示支持延伸型正则表达式的语法。动作说明:[n1[,n2]] function n1,n2表示要选择的行数,function包括:a-新增,c-取代,d-删除,i-插入,p-打印,s-取代(可以直接进行取代的工作,例如 1,20s/old/new/g)1 替换第一个匹配的内容
[root@limt01 ~]# echo " This is a test1 test2"|sed 's/test/TEST/' This is a TEST1 test2
2 替换所有匹配的内容
[root@limt01 ~]# echo " This is a test1 test2"|sed 's/test/TEST/g' This is a TEST1 TEST2
3 -i 直接修改源文件
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 在每一行的末尾加上---
[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行的文本
[root@limt01 ~]# sed "3,6s/my/your/g" pets.txtThis is my catmy cat's name is bettyThis is your dogyour dog's name is frankThis is your fishyour fish's name is georgeThis is my goatmy goat's name is adam
7 只替换第3行的文本
[root@limt01 ~]# sed "3s/my/your/g" pets.txtThis is my catmy cat's name is bettyThis is your dogmy dog's name is frankThis is my fishmy fish's name is georgeThis is my goatmy goat's name is adam
8 只替换每一行的第二个s
sed 's/s/S/2' my.txt 2表示第二个
9 一次替换多个模式,每个模式之间用;进行间隔
sed '1,3s/my/your/g; 3,$s/This/That/g' my.txtsed -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)