Chinaunix首页 | 论坛 | 博客
  • 博客访问: 363723
  • 博文数量: 102
  • 博客积分: 2000
  • 博客等级: 大尉
  • 技术积分: 1116
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-29 16:21
文章分类

全部博文(102)

文章存档

2014年(10)

2011年(1)

2008年(2)

2007年(89)

我的朋友

分类:

2007-04-25 02:43:57

1、   语法格式

sed ‘ 一系列ed命令   文件名

 

2、   一个例子程序

sed ‘s/ ^ / -> / ’  $*

sed ‘ / . / s/ ^ / -> / ’ $*

sed ‘ / ^$ / ! s/ ^ / -> / ’ $*

以上三行程序的功能一样,都是在每一行前面加上Tab。但是第一行程序没有排除空行。

 

3、   打印

sed 默认会打印匹配的每一行,但是可以使用-n选项将其关闭。在这种情况下,只有用P命令显式说明的行才出现在输出中。如

     sed –n ‘ / 模式 /p ’

     sed –n ‘ / 模式 /!p ’

 

4、   命令文件

还可以将ed命令置于一个文件中,使用-f参数调用文件执行

sed –f‘  命令文件

 

5sed命令汇总

命令

含义

a \

将行添加到输出直到不以\为终结的行

b 标号

转至命令:标号

c \

对随后的文本,如同a命令那样逐行修改

d

删除行,读下一个输入行

i \

在下一个输出前插入下面的文本

l

按行列表,使所有非打印字符可见

p

打印行

q

退出

r 文件

读文件,拷贝内容到输出

s/old/new/f

用新串替代旧串,若f=g,置换所有的变化;f=p,打印;f=w写入文件

t 标号

测试:若对当前行做了替换,转至标号

w 文件

将行写到文件

y/1/2

用串2中对应的字符替换串1中的每个字符(不支持范围值)

=

打印当前输入行号

!命令

当行未被选取使,执行命令

:标号

bt 命令设置标号

{

{}之间的命令视作一组

 

6、多命令行

         例子:

sed –n ‘ / 模式 / w file1

      / 模式 / w file2 ‘ 文件名

 

7、例子

sed ‘ / 模式 / q’ --------------------打印其输入直至包含与模式匹配的第一行;

sed ‘/ 模式 / d’ ---------------------删除包含模式的每一行;

sed –n ’20,30p’ ----------------------仅打印2030行;

sed ‘1,10d ’  ----------------------删除110行(=tail+11);

sed ‘1, /^$/d’ -----------------------删除直至包括第一个空行

sed –n ‘/^$/, /^end/p’ -------------打印每一个从一空行至一始于end的这样的行组;

sed ‘$d’    -----------------------删除最后一行

 

 

更多例子:
------------------------------------------------------------ 
1. 将 filename 档案内的 Giga 字串取代成 GigaRama

sed s/Giga/GigaRama/ filename

---------------------------------------------------------------
2. 将 filename 档案内的 xfish 字串那一行删除

sed /xfish/d filename

---------------------------------------------------------------
3. 指定哪一行,将之删除

sed '4d' filename

---------------------------------------------------------------
4. 或指定第一行到第几行,将之删除

sed '1,4d' filename

---------------------------------------------------------------
5. 将第一行到第五行印出

sed -n 1,5p filename

---------------------------------------------------------------
6. 将 file 档案内的出现 xfish 字串的那一行单独写到 file2 内

sed -n '/xfish/w file2' file

---------------------------------------------------------------
7. 万用字元的使用,将 file 档案内的 xfis? 哪一行写到 file2 内

sed '/xfis./w file2' file

---------------------------------------------------------------
8. 万用字串的使用,将 file 档案内的 xfis* 哪一行写到 file2 内

sed '/xfis*/w file2' file

---------------------------------------------------------------
9. 选定字元的使用,将 file 档案内的 xfis[abcd] 哪一行写到 file2 内

sed '/xfis[abcd]/w file2' file

---------------------------------------------------------------
10. 特别符号的取消,利用 /

sed s/\/\/ file

---------------------------------------------------------------
11. 一行的起头的取代,将 file 档案的每一行起头都加上 Hi..

sed s/^/Hi.. / file

---------------------------------------------------------------
12. 一行的结尾的取代,将 file 档案的每一行结尾都加上 Hi..

sed s/$/Hi.. / file
阅读(1075) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~