LinuxSir.cn,穿越时空的Linuxsir!

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

关于sed命令,模式匹配的最大和最小

[复制链接]
发表于 2005-10-31 12:06:07 | 显示全部楼层 |阅读模式
1. 1.text的内容
/hello/hi/yes/

2. sed命令
cat 1.text  | sed "s/\/.*/me/"

结果是
me

我想问的问题是我只想把/hello/替换掉,而不是/hello/hi/yes/整个替换掉,我加一个什么参数,可以让sed识别的是/*/而不是整个范围内/*/,也就是模式匹配的最大和最小的问题,我以前知道,现在不知道了,指教!!
发表于 2005-10-31 16:36:32 | 显示全部楼层
Post by max_xy
1. 1.text的内容
/hello/hi/yes/

2. sed命令
cat 1.text  | sed "s/\/.*/me/"

结果是
me

我想问的问题是我只想把/hello/替换掉,而不是/hello/hi/yes/整个替换掉,我加一个什么参数,可以让sed识别的是/*/而不是整个范围内/*/,也就是模式匹配的最大和最小的问题,我以前知道,现在不知道了,指教!!


试试这个
sed 's/\/[^/]*\/me/'
回复 支持 反对

使用道具 举报

发表于 2005-10-31 19:08:10 | 显示全部楼层

  1. sed 's/\/[^/]\+/\/me/'
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-31 21:31:11 | 显示全部楼层
楼上的
谢谢你的回复,
你用了+这个特殊字符,我查了一下+表示匹配前面的规则式1次或者多次
我想再问你一句,如何用+来表达匹配前面的规则式2次
我用
sed 's/\/[^/]\+2/\/me/'来实现
/hello/hi/yes/改写成/me/yes/,但是好像不对
请问如何做
回复 支持 反对

使用道具 举报

发表于 2005-11-1 02:14:49 | 显示全部楼层
Post by max_xy
楼上的
谢谢你的回复,
你用了+这个特殊字符,我查了一下+表示匹配前面的规则式1次或者多次
我想再问你一句,如何用+来表达匹配前面的规则式2次
我用
sed 's/\/[^/]\+2/\/me/'来实现
/hello/hi/yes/改写成/me/yes/,但是好像不对
请问如何做

+是1次或多次,可是不能指定次数。指定要用到
  1. \{n,m\}
复制代码
这种方式。建议看一下sed&awk这本书。
回复 支持 反对

使用道具 举报

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

本版积分规则

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