|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『楼 主』:
如何按空格切分人名
a.txt中的每一行都是人名,
特点是:每个名字都用空格分开的,但是两个字的名字中,有的是名字中含空格,有的没有.
并且每一行的名字的数量也不一定
现在我要将a.txt中的所有人名都写入到b.txt中,并且是一行一个名字.
请问有什么办法吗?
a.txt中的部分内容如下
张 三 李四 王二麻子 周 平 李建国 张文 李 军
周 平 王二麻子 周 平 李建国 张 文 李军 王二麻子 周 平 李建国
张三 李 四 王二麻子 周平 李建国 张 文 李 军 王二麻子 周 平 李建国
李建国
王二麻子 周 平 李建国
周 平 张 三
王二麻子 周平 李建国
[ Last edited by bjsh on 2007-7-31 at 12:44 PM ]
|
|
2007-6-21 17:53 |
|
|
youxi01
高级用户
积分 846
发帖 247
注册 2006-10-27 来自 湖南==》广东
状态 离线
|
『第
2 楼』:
把那个 文件发出来才好给意见的,否则都是猜测
|
|
2007-6-21 19:27 |
|
|
zh159
金牌会员
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
『第
3 楼』:
比较麻烦
给个思路:
空格分隔后,判断是否为单个字符,如果是,加上后面一个字符,如果不是,用其本身
|
|
|
2007-6-22 02:10 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
4 楼』:
sed "s/[^ ]..[^ ]\{1,\}/\n&/g" names.txt|findstr "."|more>newfile.ext Sed下载 17 楼
http://www.cn-dos.net/forum/viewthread.php?tid=30573
|
|
2007-6-22 03:42 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
5 楼』:
版主的 sed 确实是方便,能解释一下 它是凭什么来确定人名的吗?
我试过将三个字的名字也用空格分开,它也能辨认.
我怕弄错,谢谢!!!!!!
|
|
2007-6-22 06:18 |
|
|
namejm
荣誉版主
batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
|
2007-6-22 07:21 |
|
|
bjsh
银牌会员
积分 2000
发帖 621
注册 2007-1-1
状态 离线
|
『第
7 楼』:
if !num! equ 2 (
set /p=%%i<nul&echo.
set num=0
) else set /p=%%i<nul&if !num! equ 0 echo.
|
|
2007-6-22 10:41 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
8 楼』:
RE 26933062:
Quote: | sed "s/[^ ]..[^ ]\{1,\}/\n&/g" names.txt|findstr "."|more>newfile.ext |
|
首先sed会对第一对//里面的正则表达式进行匹配,如果符合这个模式的就换行之后输出,这样就可以一行一个姓名了。
关键的匹配模式是这个“[^ ]..[^ ]\{1,\}”。因为一个中文字符在sed里面用两个“.”表示匹配,又因为每个姓名至少是用三个“.”来匹配,所以前面用“[^ ]..”来匹配一个姓名的开头,然后用“[^ ]\{1,\}”来匹配至少一个的非空字符,所以匹配到一个姓名的前三个“...”之后,遇到空格就停止匹配,所以类似你上面格式的包含姓名的字符都将被这样来处理,最终达到目的。
|
|
2007-6-22 12:54 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
|
2007-6-23 02:12 |
|
|
huihuil
新手上路
积分 2
发帖 1
注册 2007-6-23
状态 离线
|
|
2007-6-23 08:48 |
|
|
flyinthesky
初级用户
积分 34
发帖 17
注册 2007-6-23
状态 离线
|
|
2007-6-23 20:28 |
|