|
hgx126
初级用户
积分 100
发帖 80
注册 2008-9-12
状态 离线
|
『楼 主』:
[求助]统计字符串个数并以空格填充
一文本文件,内容有多行,如下:
G001090161401,20031118
G47480000066706,20071108
G482700044863,20071026
G51293019641117001X,20070124
G88130123948484,20070919
G88130124226389,20070921
G88130124348,20070928
…… 各行字符串个数不等,且都少于30。我现在要将各行字符数目统一为30个,并将其中的逗号去掉。字符不足30个的以空格填充,填充位置就是逗号所在位置。填充好后文本内容如下:
G001090161401 20031118
G47480000066706 20071108
G482700044863 20071026
G51293019641117001X 20070124
G88130123948484 20070919
G88130124226389 20070921
G88130124348 20070928
…… 求一批处理,处理以上文本。
求大家相助。
谢谢
[ Last edited by hgx126 on 2009-5-18 at 11:52 ]
|
|
2009-5-18 11:48 |
|
|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
|
2009-5-18 12:33 |
|
|
zh159
金牌会员
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
|
2009-5-18 12:56 |
|
|
hgx126
初级用户
积分 100
发帖 80
注册 2008-9-12
状态 离线
|
『第
4 楼』:
谢谢两位。特别要感谢zh159兄提供的思路,太妙了。
再次感谢。
|
|
2009-5-18 13:26 |
|
|
hgx126
初级用户
积分 100
发帖 80
注册 2008-9-12
状态 离线
|
『第
5 楼』:
另外,我还有个想法,要求每行字符也为30个,只是在每一行的行首加0填充,达到如下效果,又该如何处理:
000000000G00109016140120031118
0000000G4748000006670620071108
000000000G48270004486320071026
000G51293019641117001X20070124
0000000G8813012394848420070919
0000000G8813012422638920070921
0000000000G8813012434820070928 [ Last edited by hgx126 on 2009-5-20 at 13:44 ]
|
|
2009-5-20 13:43 |
|
|
jmz573515
银牌会员
积分 1212
发帖 464
注册 2006-12-13
状态 离线
|
|
2009-5-20 20:58 |
|
|
hgx126
初级用户
积分 100
发帖 80
注册 2008-9-12
状态 离线
|
『第
7 楼』:
echo !n:~-30!?就是从最右边向左取30位?
|
|
2009-5-20 21:45 |
|
|
yishanju
银牌会员
[b]看你妹啊[/b]
积分 1488
发帖 1357
注册 2006-5-20
状态 离线
|
『第
8 楼』:
Quote: | Originally posted by hgx126 at 2009-5-20 13:43:
另外,我还有个想法,要求每行字符也为30个,只是在每一行的行首加0填充,达到如下效果,又该如何处理:
000000000G00109016140120031118
0000000G474 ... |
|
嗯嗯,大家的思路代码都很精妙,顺着大家的思路利用FR来处理:
首先在每行前面补22个0
fr -ric:"^" -t:"00000000000000000000000" 1.txt
start 1.txt
pause 然后截取逗号前22个字符和后面所有字符
fr -ric:".*(.{22,22}),(.+)" -t:"\1\2" 1.txt
start 1.txt
pause [ Last edited by yishanju on 2009-5-21 at 23:30 ]
|
有问题请发论坛或者自行搜索,再短消息问我的统统是SB |
|
2009-5-21 01:35 |
|
|
yishanju
银牌会员
[b]看你妹啊[/b]
积分 1488
发帖 1357
注册 2006-5-20
状态 离线
|
『第
9 楼』:
按一楼的处理。
逗号直接替换成N十个空格:
fr -ric:"," -t:" " 1.txt 从行首截取22个字符和后面的8个数字。
fr -ric:"^(.{22,22}).*(\d{8,8})" -t:"\1\2" 1.txt FR 下载:http://baiy.cn/utils/fr/index.htm
[ Last edited by yishanju on 2009-5-21 at 04:08 ]
|
有问题请发论坛或者自行搜索,再短消息问我的统统是SB |
|
2009-5-21 02:02 |
|