sed缓冲区 sed 处理文件时,会把文件的每一行保存在一个临时缓冲区,即模式空间。
sed处理完一行后,该模式空间就被清空,下一行等待处理。因此可把模式空间内容用命令h复制并
保存在一个暂存缓冲区(holding buffer)内,然后可用命令G把它从暂存缓冲区读出一行,并放回模式空间缓冲区,
追加在模式空间内当前行的后面。
1. sed '/north/p' datafile
缺省情况下,sed会把输入的所有行都打印在标准输出上;如果某行匹配了north,则sed将该行再打印一遍。
2. sed -n '/north/p' datafile
只打印匹配north的行.
sed 's/%//g' 把%换成空格
sed 's/^0*//g' 把以0开头的数字换成空格
sed /^$/d 删除空行
sed $d 删除最后一行
sed ld 删除第一行
sed 's/[0-9][0-9]*/& password/g' file.txt 把password连接到
3.删除d sed '3d' datafile 删除第3行
sed '3,$d' datafile 删除从第3行到结束
sed '$d' datafile 删除最后一行
sed '/north/d' file 删除匹配north的行
4.替换命令s
sed 's/west/north/g' datafile 全局替换
sed 's/[0-9][0-9]$/&.5/g' datafile
所有以两位数字结尾的行,后面加上.5(点5)
sed -n 's/\(Mar\)got/\1lianne/p' datafile
Mar作为标签1,将Margot 替换成Marianne
sed 's#3#88#g' datafile等价于 sed 's/3/88/g' datafile
指定行范围:逗号
sed -n '/west/,/east/p' datafile 指定在模式west和east之间的行,打印
sed -n '5,/^northeast/p' datafile 打印从第5行到第一个以northeast开头的行之间的所有行
sed '/west/,/east/s/$/**VACA**/' datafile修改从模式east和west之间的所有行,并将行尾$替换成**VACA**
多重编辑e
sed -e '1,3d' -e 's/Mike/Jones/' datafile
删除1到3行,然后再替换Mike为Jones(先全部执行完第一重编辑,再进行第二重编辑)
读入r
sed '/suan/r newfile' datafile
如果文件datafile中某一行匹配到模式suan,则在该行后读入newfile的内容。
写文件w
sed -n '/north/w newfile' datafile
如果文件datafile中某一行匹配到模式north,则把该行写入newfile文件中
追加
sed '/^north /a\\
----->THE NORTH SALES