Chinaunix首页 | 论坛 | 博客
  • 博客访问: 791271
  • 博文数量: 108
  • 博客积分: 2887
  • 博客等级: 少校
  • 技术积分: 1570
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-28 07:51
文章分类

全部博文(108)

文章存档

2012年(4)

2011年(86)

2010年(18)

分类: Python/Ruby

2011-04-27 16:35:36

1.使用s命令用新文本替换某一行中的文本:
[olz@jieoulinux ~]$ echo "This is a test" | sed 's/test/practice
/'
This is a practice
用practice替换test。注意:红色标注的“
/”一定要有,否则产生错误。

2.替换标记
当我们使用s命令来执行替换操作时,s命令默认之会替换每一行中首次出现的匹配文本,要替换所有的匹配文本
我们可以使用替换标记,替换标记放在替换的文本之后,
s/var1/var2/flages
其中可以使用4种标记:
数字:表示要替换第几个匹配文本。
g:替换所有匹配文本
p:打印包含匹配文本的那一行,经常与-n连用,然后使命令只打印已被替换的行。
       (注:-n用于禁止sed编辑器的输出)
w  file: 将替换的文本写入文件file

3.替换字符
在文本字符串中,我们可能会遇到不容易在替换模式中使用的字符,例如我们最常见的正斜杠,正斜杠经常用作
路径分隔符,要替换它可能很困难,见下面的例子:
将/etc/passwd中的bash shell 替换为Kshell,我们这样做:
[olz@jieoulinux ~]$ sed 's/\/bin\/bash/\/bin\/ksh/' /etc/passwd
我们必须用反斜杠将正斜杠转义,否则会导致错误。

比较友好的是sed允许我们为替换的字符串界定符选择一个不同的字符:
[olz@jieoulinux ~]$ sed 's
!/bin/bash!/bin/ksh!' /etc/passwd
感叹号被用作字符串界定符。

阅读(1060) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~