![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-05 04:19 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何按空格切分人名 |
| 可打印版本 1,157 / 10 |
| 第1楼 26933062 | 发表于 2007-06-21 17:53 |
| 银牌会员 发帖 879 积分 2,268 | |
|
如何按空格切分人名 a.txt中的每一行都是人名,
特点是:每个名字都用空格分开的,但是两个字的名字中,有的是名字中含空格,有的没有. 并且每一行的名字的数量也不一定 现在我要将a.txt中的所有人名都写入到b.txt中,并且是一行一个名字. 请问有什么办法吗? a.txt中的部分内容如下 张 三 李四 王二麻子 周 平 李建国 张文 李 军 周 平 王二麻子 周 平 李建国 张 文 李军 王二麻子 周 平 李建国 张三 李 四 王二麻子 周平 李建国 张 文 李 军 王二麻子 周 平 李建国 李建国 王二麻子 周 平 李建国 周 平 张 三 王二麻子 周平 李建国 [ Last edited by bjsh on 2007-7-31 at 12:44 PM ] |
|
| 第2楼 youxi01 | 发表于 2007-06-21 19:27 |
| 高级用户 发帖 247 积分 846 来自 湖南==》广东 | |
|
把那个 文件发出来才好给意见的,否则都是猜测
|
|
| 第3楼 zh159 | 发表于 2007-06-22 02:10 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
比较麻烦
给个思路: 空格分隔后,判断是否为单个字符,如果是,加上后面一个字符,如果不是,用其本身 |
|
| 第4楼 lxmxn | 发表于 2007-06-22 03:42 |
| 版主 发帖 4,938 积分 11,386 | |
|
Sed下载 17 楼 http://www.cn-dos.net/forum/viewthread.php?tid=30573 |
|
| 第5楼 26933062 | 发表于 2007-06-22 06:18 |
| 银牌会员 发帖 879 积分 2,268 | |
|
版主的 sed 确实是方便,能解释一下 它是凭什么来确定人名的吗?
我试过将三个字的名字也用空格分开,它也能辨认. 我怕弄错,谢谢!!!!!! |
|
| 第6楼 namejm | 发表于 2007-06-22 07:21 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
除了使用第三方软件,纯P并非不能胜任:
原来还要求一行一个名字啊,那就用下面这个代码吧: [ Last edited by namejm on 2007-6-22 at 11:59 PM ] |
|
| 第7楼 bjsh | 发表于 2007-06-22 10:41 |
| 银牌会员 发帖 621 积分 2,000 | |
|
if !num! equ 2 (
set /p=%%i<nul&echo. set num=0 ) else set /p=%%i<nul&if !num! equ 0 echo. |
|
| 第8楼 lxmxn | 发表于 2007-06-22 12:54 |
| 版主 发帖 4,938 积分 11,386 | |
|
RE 26933062:
sed "s/..\{1,\}/\n&/g" names.txt|findstr "."|more>newfile.ext 首先sed会对第一对//里面的正则表达式进行匹配,如果符合这个模式的就换行之后输出,这样就可以一行一个姓名了。 关键的匹配模式是这个“..\{1,\}”。因为一个中文字符在sed里面用两个“.”表示匹配,又因为每个姓名至少是用三个“.”来匹配,所以前面用“..”来匹配一个姓名的开头,然后用“\{1,\}”来匹配至少一个的非空字符,所以匹配到一个姓名的前三个“...”之后,遇到空格就停止匹配,所以类似你上面格式的包含姓名的字符都将被这样来处理,最终达到目的。 |
|
| 第9楼 26933062 | 发表于 2007-06-23 02:12 |
| 银牌会员 发帖 879 积分 2,268 | |
|
谢各位,强!!
学习!!! |
|
| 第10楼 huihuil | 发表于 2007-06-23 08:48 |
| 新手上路 发帖 1 积分 2 | |
|
学习了.谢谢
|
|
| 第11楼 flyinthesky | 发表于 2007-06-23 20:28 |
| 初级用户 发帖 17 积分 34 | |
|
好好学习天天向上!
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |