sed是一个非交互性文本流编辑器。它编辑文件或标准输入导出的文本拷贝。标准输入可
能是来自键盘、文件重定向、字符串或变量,或者是一个管道的文本。sed可以做些什么呢?
别忘了,Vi也是一个文本编辑器。sed可以随意编辑小或大的文件,有许多sed命令用来编辑、
删除,并允许做这项工作时不在现场。sed一次性处理所有改变,因而变得很有效,对用户来
讲,最重要的是节省了时间。

1、sed怎样读取数据
sed从文件的一个文本行或从标准输入的几种格式中读取数据,将之拷贝到一个编辑缓冲
区,然后读命令行或脚本的第一条命令,并使用这些命令查找模式或定位行号编辑它。重复
此过程直到命令结束。

2、调用sed
使用sed命令行格式为:
sed [选项] sed命令 输入文件
使用sed脚本文件,格式为:
sed [选项] -f sed脚本文件 输入文件
要使用第一行具有sed命令解释器的sed脚本文件,其格式为:
sed脚本文件 [选项] 输入文件

sed选项
n    不打印;sed不写编辑行到标准输出,缺省为打印所有行(编辑和未编辑)。p命令可以
用来打印编辑行。
c    下一命令是编辑命令。使用多项编辑时加入此选项。如果只用到一条sed命令,
此选项无用,但指定它也没有关系。
f    如果正在调用sed脚本文件,使用此选项。此选项通知sed一个脚本文件支持所有的sed
命令,例如:sed-fmyscript.sedinput_file,这里myscript.sed即为支持sed命令的文件。

保存sed输出
简单地将所有输出重定向到一个文件即可
#sed 'some-sed-commands' input-file > somefile

使用sed在文件中定位文本的方式
x        x为一行号,如1
x,y        表示行号范围从x到y,如2,5表示从第2行到第5行
/pattern/    查询包含模式的行。例如/disk/或/[a-z]/
/pattern/pattern/    查询包含两个模式的行。例如/disk/disks/
pattern/,x        在给定行号上查询包含模式的行。如/ribbon/,3
x,/pattern/        通过行号和模式查询匹配行。3./vdu/
x,y!        查询不包含指定行号x和y的行。1,2!

sed编辑命令
p         打印匹配行
=         显示文件行号
a\        在定位行号后附加新文本信息
i\         在定位行号后插入新文本信息
d         删除定位行
c\         用新文本替换定位文本
s         使用替换模式替换相应模式
r         从另一个文件中读文本
w         写文本到一个文件
q         第一个模式匹配完成后推出或立即推出
l         显示与八进制A S C I I代码等价的控制字符
{}        在定位行执行的命令组
n         从另一个文件中读文本下一行,并附加在下一行
g         将模式2粘贴到/pattern n/
y         传送字符
n         延续到下一输入行;允许跨行的模式匹配语句

使用p(rint)显示行
print 命令格式为[address[,address]P。显示文本行必须提供sed命令行号
#sed '2p' somefile
只打印匹配行
#sed -n '2p' somefile

打印范围
可以指定行的范围,现打印1到3行,用逗号分隔行号
#sed -n '1,3p' somefile

打印模式
假定要匹配单词Neave,并打印此行,方法如下。使用模式/pattern/格式,这里为/Neave/
#sed -n '/Neave/'p somefile

匹配元字符
匹配元字符$前,必须使用反斜线\屏蔽其特殊含义。模式为/\$/ p
#sed -n '/\$/'p somefile

显示整个文件
要打印整个文件,只需将行范围设为第一行到最后一行 1,$。$意为最后一行
#sed -n '1,$p' somefile

打印行号
要打印行号,使用等号=。打印模式匹配的行号,使用格式 /pattern/=
#sed -e '/music/=' somefile
如果只关心实际行号,使用 - e选项

替换文本
替换命令用替换模式替换指定模式,格式为:
[address[,address]]s/pattern-to-find/replacement-pattern/[gpwn]
s    选项通知s e d这是一个替换操作,并查询 pattern-to-find,成功后用replacement-pattern替
换它。
替换选项如下:
g     缺省情况下只替换第一次出现模式,使用 g选项替换全局所有出现模式。
p     缺省sed将所有被替换行写入标准输出,加 p选项将使- n选项无效。- n选项不打印输出
结果。
w     文件名 使用此选项将输出定向到一个文件。

快速一行命令  []表示空格,[ ]表示tab键
‘s/\.$//g’        删除以句点结尾行
‘-e/abcd/d’        删除包含abcd的行
‘s/[][][]*/[]/g’删除一个以上空格,用一个空格代替
‘s/^[][]*//g’    删除行首空格
‘s/\.[][]*/[]/g’删除句点后跟两个或更多空格,代之以一个空格
‘/^$/d’            删除空行
‘s/^.//g’        删除第一个字符
‘s/COL\(...\)//g’删除紧跟COL的后三个字母
‘s/^\///g’        从路径中删除第一个\
‘s/[]/[]//g’    删除所有空格并用tab键替代
‘S/^[]//g’        删除行首所有tab键
‘s/[]*//g’        删除所有tab键