LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 977|回复: 2

sed替换的时候,如何表达倍数?

[复制链接]
发表于 2008-1-24 20:47:52 | 显示全部楼层 |阅读模式
一个文件 “file” 的内容如下:
This is a test.
Yahoooooooooo
将文件所有行前面加上空格,很简单:
# sed 's/^/  /' file
  This is a test.
  Yahoooooooooo
我想在每一行前面加五个空格,我这么用的:
# sed 's/^/ \{5\}/' file
{5}This is a test.
{5}Yahoooooooooo
看来这种倍数的用法无效,我不知道是为什么,而这种倍数用法在下面的模式匹配是行得通的:
# sed -n '/o\{5\}/p' file
Yahoooooooooo

所以,得出结论,这种倍数用法不适用于替换,觉得不应该是这样的结果,不知道为什么。我的问题是,在替换的时候,如何表达倍数?
发表于 2008-1-24 21:18:27 | 显示全部楼层
Post by mascot;1810782
一个文件 “file” 的内容如下:
This is a test.
Yahoooooooooo
将文件所有行前面加上空格,很简单:
# sed 's/^/  /' file
  This is a test.
  Yahoooooooooo
我想在每一行前面加五个空格,我这么用的:
# sed 's/^/ \{5\}/' file
{5}This is a test.
{5}Yahoooooooooo
看来这种倍数的用法无效,我不知道是为什么,而这种倍数用法在下面的模式匹配是行得通的:
# sed -n '/o\{5\}/p' file
Yahoooooooooo

所以,得出结论,这种倍数用法不适用于替换,觉得不应该是这样的结果,不知道为什么。我的问题是,在替换的时候,如何表达倍数?


哈哈,当年我也困惑过。都怪自己没理解人家的意思。
其实,sed的语法是s/regular-expression/replacement text/
而\{\}是regular-expression, 不能用在replacement text
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-24 21:31:36 | 显示全部楼层
Post by forlorngenius;1810793
哈哈,当年我也困惑过。都怪自己没理解人家的意思。
其实,sed的语法是s/regular-expression/replacement text/
而\{\}是regular-expression, 不能用在replacement text


呵呵,看了你的解释我也笑了。感谢你的分享。。。。。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表