Chinaunix首页 | 论坛 | 博客
  • 博客访问: 567870
  • 博文数量: 213
  • 博客积分: 6789
  • 博客等级: 准将
  • 技术积分: 1947
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-01 17:11
文章分类

全部博文(213)

文章存档

2012年(9)

2011年(62)

2010年(99)

2009年(43)

分类:

2009-09-21 14:29:55

什么是sed:sed命令是一个流线式的非交互式的编译器。与交互式的编译器不同,sed允许在命令行输入命令和文件名,然后在屏幕上看命令的输出结果。
sed怎样工作: sed一次处理一行文件并把输出送往屏幕。

FORMAT
   sed 'command' filename(s)

选项:
-e command           允许多点编辑
--expression=command 同上
-f                   引导sed脚本文件名
-filr=script-file    同上
-V, --version        打印版本和版权信息

sed发现语法错误时,就会直接将错误信息发所到标准错误输出。如果无法确定错误出现在那里,sed就会出现的错误信息,你可以从中推测错误出现的位置。sed会返回一个退出状态给Shell, 如果没有错误就返回0,否则返回非0。

sed实例:

1 打印
sed '/north/p' datafile
默认打印所有的行到标准输出。如果模板north被找到,sed除了打印所有的行以外,还要打印匹配行(匹配行总共打印2次)。

sed -n '/north/p' datafile
-n选项取消了在使用-p选项时sed的默认行为。在没有-n的时候,包含模板的行将被打印2次,但使用-n的时候将只打印包含模板的行。
--quiet选项和-n一样。

2 删除

sed '3d' datafile
删除第三行,其他行默认打印到屏幕上。

sed '3,$d' datafile
从第三行到最后一行都被删除。其他打印。‘$’表示最后一行,逗号被称为范围操作符。在这个例子中,范围是从第三行到最后一行。

sed '$d' datafile
删除最后一行,并打印其他。

sed '/north/d' datafile
删除所有包含模板north的行,并打印其他行。

替换:

sed 's/west/north/g' datafile
s命令表示替换。行末的g标志表示命令作用的范围是整个行。就是说,如果找到多个west,他们就都将被替换为north。如果没有g标志,则只有每行第一个west被替换为north。

sed -n 's/^west/north/p' datafile
s命令表示替换。-n选项和行末尾的p标志一起使用告诉sed只打印那些发生替换的行。

sed 's[0-9][0-9]$/&.5/' datafile
&符号表示替换字符串中被找到的部分。所有以两个数字结束的行,最后的数字都将被他们自己替换,同时追加.5。就是说34 变成 34.5。

sed -n 's/\(Mar\)got/\1ianne/p' datafile
模板Mar被包含在一对括号内。并在特殊的寄存器中保存为标签1,它将在后面作为\1替换字符串。Margot替换所有的Marianne。

sed -n '/west/,/east/p' datafile
打印所有在west和east所确定范围内的行。如果west后没有east则打印到末尾。

sed =n '5,/^northeast/p' datafile
打印从第5行开始到第一个(是从头开始数第一个,不是从第5行开始数)包含northeast的所有行。

sed 's#3#88#g' datafile
s后面的字符是分隔搜索字符串和替换字符串的分隔符。默认分隔符是斜杠,但是在s命令使用的情况下可以改变。不论什么字符紧跟着s命令都被认为是新的分隔符。这个技术在搜索包含斜杠的模式时非常有用,例如搜索时间和路径。

3 多点编辑

sed -e '1,3d' -e 's/hemenway/jones/' datafile
-e选项允许多点编辑。第一个编辑命令是删除第一到第三行。第二个编辑命令是用hemenway替换jones。因为2个是在同一行执行,所以命令的执行顺序将影响命令的结果。

4 写入文件

sed -n '/north/w newfile2' datafile
命令w表示把一个指定的行写入文件。所有包含north的行都将被写入名为newfile2的文件中。

5 从文件中读

sed '/Suan/r newfile' datafile
命令r表示从文件中读取指定的行。newfile文件的内容将被读入输入文件datafile中,显示在与suzan相匹配的行的后面。如果suzan在不止一行中出现,newfile的内容就将显示在所有匹配的行下面。

6 插入

sed '/eastern/i\\
NEW ENGLAND REGION-------------' datafile
命令i是插入命令。如果模板eastern被匹配,i命令就把反斜杠后面的文本插入到包含eastern的行的前面。除了最后一行,每一行插入完成后都需要反斜杠。



反斜线
1。 放在字符前面保护这个字符不被翻译。
2。 像单引号一样放在字符的两边。

单引号
1 必须成对出现。
2 保护所有字符不被翻译,除了:A 本身 B “!” 和 “.”(csh) C \

双引号
1 必须成对出现。
2 保护所有字符不被翻译,除了:A 本身 B “!” 和 “.”(bash, csh) C 变量替换中的$ D 命令替换中的反单引号"``"
阅读(839) | 评论(0) | 转发(0) |
0

上一篇:位置参量

下一篇:kernel 17

给主人留下些什么吧!~~