中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-18 23:56
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于sed替换命令的疑问。 查看 897 回复 3
楼 主 关于sed替换命令的疑问。 发表于 2010-08-02 16:56 ·  中国 湖北 襄阳 电信
新手上路
积分 12
发帖 12
注册 2010-06-26 09:35
UID 169536
性别 男
状态 离线
@echo off
echo I love sed. |sed "s#*#&,#g"
预期目的是在每个单词后加上逗号。
即I, love, sed,.
可是实际结果是:
I, love, sed,., ,
它在.和空格后也加上了逗号,不知是为什么?
.和空格按说不匹配*呀?
2 发表于 2010-08-02 17:15 ·  中国 湖北 黄石 电信
初级用户
积分 22
发帖 20
注册 2009-07-06 23:34
UID 148862
性别 男
状态 离线
echo I love sed. |sed "s#[A-Za-z]\{1,\}#&,#g"
3 发表于 2010-08-02 19:20 ·  中国 湖北 襄阳 电信
新手上路
积分 12
发帖 12
注册 2010-06-26 09:35
UID 169536
性别 男
状态 离线
谢谢你的回答,原来是*号是零到多个,忘记了。

我又有一个新的问题,就大侠回答一下,为什么最后句点后的空格匹配,而I、love、sed间的那两个空格为什么不匹配。

`a*b'
Matches zero or more `a's followed by a single `b'. For example, `b' or `aaaaab'.

上面好理解

但是,a*(只有a*,后面没有b)当匹配0个时,该怎么理解,还请不吝赐教。

麻烦大侠回答一下。
4 发表于 2010-08-02 20:21 ·  中国 湖北 黄石 电信
初级用户
积分 22
发帖 20
注册 2009-07-06 23:34
UID 148862
性别 男
状态 离线
这个问题确实令人费解,同等高人回答,按楼上的思路试了下JS和AHK中的正则,结果如下:

JS:
I,,,,,, love,,,,,, ,,, sed,,,,,,.,,, ,,,


AHK:
I,, love,, , sed,,., ,

SED:
I, love, sed,., ,

[ Last edited by fsfss on 2010-8-2 at 20:25 ]
论坛跳转: