! :表示对匹配结果取反. 1) sed "/north/!d" datafile 将删除所有不包含north的行.
a :追加命令. 1) sed "/^north/a first line second line third line" datafile 将会在所有包含north行的后面追加first line
second line
third line. 其中表示下一行还有内容的连词. 如果是c-shell: 2)sed "/^north/a first line \ second line \ third line" datafile 其中多出来的是转义符.
d :表示删除. 1) sed "/north/d" datafile 将删除所有包含north的行. 2) sed "3d" datafile 将删除第三行. 3) sed "3,$d" datafile 将删除第三行到文件的结尾行. 4) sed "d" datafile 将删除所有行.
e :表示多点编辑. 1) sed -e "1,3d" -e "s/Hemenway/Jones/" datafile 一个sed语句执行多条编辑命令, 因此命令的顺序会影响其最终结果. 2) sed -e "s/Hemenway/Jones/" -e "s/Jones/Max/" datafile 先用Jones替换Hemenway, 再用Max替换Jones.
i :表示插入. 1) sed "/north/i first line second line third line" datafile 其规则和a命令基本相同, 只是a是将额外的信息输出到匹配行的后面, i是将额外信息输出到匹配行的前面.
p :表示打印. 1) sed "/north/p" datafile 将打印所有包含north的行. 2) sed "3p" datafile 将打印第三行. 3) sed "3,$p" datafile 将打印第三行到文件的结尾行. 4) sed "p" datafile 将打印所有行. 注: 使用p的时候sed将会输出指定打印的行和所有行, 当其与-n选项组合时候,将只是打印输出匹配的行.
n :下一行命令. 1) sed "/north/ {n; s/Chin/Joseph/}" datafile 将先定位包含north的行, 然后取其下一行作为目标行, 再在该目标行上执行s/Chin/Joseph/的替换操作. 2) sed "/north/ {n; n; s/Chin/Joseph/}" datafile 将取north包含行的后两行作为目标行. 注: {}作为嵌入的脚本执行.
q :退出命令. 1) sed "5q" datafile 到第五行退出(输出第五行). 2) sed "/north/q" datafile 输出到包含north的行退出(输出包含north的行). 3) sed "/Lewis/ {s/Lewis/Joseph/; q}" datafile 将先定位包含Lewis的行, 然后用Joseph替换Lewis,最后退出sed操作.
r :文件读入. 1) sed "/Suan/r newfile" datafile 在输出时,将newfile的文件内容跟随在datafile中包含Suan的行后面输出,如果多行都包含Suan,则文件被多次输出.
s :表示替换. 1) sed "s/west/north/g" datafile 将所有west替换为north, g表示如果一行之内多次出现west,将全部替换, 如果没有g命令,将只是替换该行的第一个匹配. 2) sed -n "s/^west/north/p" datafile 将所有以west开头的行替换为north, 同时只是输出替换匹配的行. 3) sed -n "1,5 s/(Mar)got/1ianne/p" datafile 将从第一行到第五行中所有的Margot替换为Marianne, 1是(Mar)的变量替代符.
w :文件写入. 1) sed -n "/north/w newfile2" datafile 将datafile中所有包含north的行都写入到newfile2中.
x :互换命令. 1) sed -e "/pat/h" -e "/Margot/x" datafile x命令表示当定位到包含Margot行,互换缓冲区和该匹配Margot行的数据, 即缓冲区中的数据替换该匹配行显示, 该匹配行进入缓冲区, 如果在交换时缓冲区是空, 则该匹配行被换入缓冲区, 空行将替换该行显示, 后面依此类推. 如果交换后, 再次出现匹配pat的行, 该行将仍然会按照h命令的规则替换(不是交换, 交换只是发生在发现匹配Margot的时候)缓冲区中的数据.
y :变形命令. 1) sed "1,3y/abcd/ABCD/" datafile 将1到3行中的小写abcd对应者替换为ABCD,注意abcd和ABCD是一一对应的. 如果他们的长度不匹配,sed将报错. 2) sed "y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/" datafile 将datafile中所有的小写字符替换为大写字母.