以下范例中源文件名为datafile
1.打印:p命令
sed '/north/p' datafile
默认情况下,sed把所有输入行都打印在标准输出上。如果在某一行匹配到模式north,sed将把该行另外打印一遍。
sed -n '/north/p' datafile
-n选项取消sed的默认打印动作,-n与p配合使用时,只打印匹配行。
2.删除:d命令
sed '3d' datafile
删除第3行,默认情况下,其余的行都被打印到屏幕上。
sed '3,$d' datafile
删除从第3行到最后一行的内容,其余被打印。
sed '$d' datafile
删除最后一行的内容,其余被打印。
sed '/north/d' datafile
删除包含north的行,其余被打印。
3.替换:s命令
sed 's/west/north/g' datafile
s命令用于替换。命令末端的标志g表示在行内进行全局替换;也就是说,如果某一行里出现了多个west,所有的west都被替换为north。如果没有g命令,则只将每一行的第一个west替换为north。
sed -n 's/^west/north/p' datafile
s命令用于替换。选项-n与命令末行的标志p配合,告诉sed只打印发生替换的那些行;也就是说,如果只有在行首找到west并将其替换为north时,才打印此行。
sed 's/[0-9][0-9]$/&.5/' datafile
当“与”符号(&)用在替换串时,它代表在查找串中匹配到的内容。例中,所有以两位数结尾的行后面都被加上 .5。
sed -n 's/Hemenway/Jones/gp' datafile
文件中出现的所有Hemenway都被替换为Jones,只有发生变化的行才被打印。选项-n与命令p的组合取消了默认的输出。标志g的含义是在行内进行全局替换。
sed -n 's/\(Mar\)got/\1ianne/p' datafile
包含在圆括号里的模式Mar作为标签1保存于特定的寄存器中。替换串可通过\1引用它。则Margot被替换为Marlianne。
sed 's#3#88#g' datafile
紧跟在s命令后的字符就是查找串和替换串之间的分隔符。分隔符默认为正斜杠,但可以改变。无论什么字符(换行符、反斜线除外),只要紧跟着s命令,就成了新的串分隔符。这个方法在查找包含正斜杠的模式时很管用,例如查找路径或者生日。
4.指定行的范围:逗号
sed -n '/west/,/east/p' datafile
打印在模式west和east之间的所有行。如果west出现在east之后的某一行,则打印的范围从west所在行开始,到下一个出现east的行或文件末尾(如果前者未出现)。
sed -n '5,/^northeast/p' datafile
打印从第5行到第一个以northeast开头的行之间的所有行。
sed '/west/,/east/s/$/**VACA**/' datafile
修改从模式east和west之间的所有行,将各行的行尾($)替换为字符串**VACA**。换行符被移到这个新的字符串后面。
5.多重编译:e命令
sed -e '1,3d' -e 's/Hemenway/Jones/' datafile
选项-e用于进行多重编译。第一重编辑删除第1~3行。第二重编辑将Hemenway替换为Jones。因为是逐行进行这两项编辑(即这两个命令都在模式空间的当前行上执行),所以编辑命令的顺序会影响结果。
6.读文件:r命令
sed '/Suan/r newfile' datafile
r命令读取文件的指定行。如果在文件datafile的某一行匹配到模式Suan,就在该行后读入文件newfile的内容。如果出现Suan的不止一行,则在出现Suan的各行后都读入newfile文件的内容。
7.写文件:w命令
sed -n '/north/w newfile' datafile
w命令把指定行写入文件。文件datafile中所有包含模式north的行都被写到文件newfile中。
8.追加:a命令
sed '/^north /a\
--->THE NORTH SALES DISTRICH HAS MOVED<---' datafile
命令a用于追加。字符串--->THE NORTH SALES DISTRICH HAS MOVED<---被加在以north开头,north后跟一空格的各行之后。用于追加的文本必须出现在追加命令的下一行。sed要求a命令后面跟着一个反斜杠。
9.插入:i命令
sed '/wastern/i\
NEW ENGLAND REGION\
----------------------------------------------------------------' datafile
命令i是插入命令。如果在某一行匹配到模式eastern,i命令就在该行的上方插入命令中反斜杠后的文本。
10.修改:c命令
sed '/eastern/c\\
THE EASTERN REGION HAS BEEN TEMPORARILY CLOSED' datafile
c命令是修改命令。该命令将完整地修改在模式缓冲区中的当前行。如果模式eastern被匹配,c命令将用反斜杠后的文本替换包含eastern的行。除最后一行之外,反斜杠对每一个插入的行都是必要的(附加的反斜杠用于C shell的特定要求)。
11.获取下一行:n命令
sed '/eastern/{ n;s/AM/Archie/; }' datafile
如果在某一行匹配到模式eastern,n命令就指示sed下一个输入行(即包含AM MainJr的那行)替换模式空间中的当前行,并用Archie替换该行中的AM,然后打印该行,再继续往下处理。
12.转换:y命令
sed '1,3y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOKQRSTUVWXYZ/ datafile
y命令把第1~3行中的所有的小写字母转换成大写。正则表达式元字符对y命令不起作用。与替换分隔符一样,斜杠可以被替换成其他的字符。
13.退出:q命令
sed '5q' datafile
打印完第5行之后,q命令让sed程序退出。
sed '/Lewis/{ s/Lewis?Joseph/;q; }' datafile
在某行匹配到模式Lewis时,s表示先用Joseph替换Lewis,然后q命令让sed程序退出。