Board logo

标题: 如何用批处理的方法解决这个问题! [打印本页]

作者: haier168     时间: 2010-3-30 11:06    标题: 如何用批处理的方法解决这个问题!
L2349,2349,2349
R2349,2349,2349
L8846,8846,8846
8847,8847
R8846,8846,8846
8847,8847
L9643,9643,9643
9645,9645
9646,9646
R9643,9643,9643
9645,9645
9646,9646
我现在想整理成这个样子的格式
L2349,2349,2349
R2349,2349,2349
L8846,8846,8846
L8847, 8847,8847
R8846,8846,8846
R8847, 8847,8847
L9643,9643,9643
L9645,9645,9645
L9646,9646,9646
R9643,9643,9643
R9645,9645,9645
R9646,9646,9646
用foxpro 处理比较方便,但如果某一域的资料长于254个,则就十分麻烦。
希望各位达人能用批处理的的方法解决,最好能有 gawk,sed, grep 之类的命令,因为最近我也正在学习这方面的东西,感觉很强大,很神奇。

作者: Hanyeguxing     时间: 2010-3-30 13:07
你的问题没有表述清楚:
1,例如
8847,8847
前面的是一个制表符还是若干个空格,空格的话,是几个,以下是否与此相同。
2,只说了个简单的整理后的样子,没有明确说明转换的过程和具体要求,即如何转换的

作者: haier168     时间: 2010-3-30 13:22
哦,首相感謝你能來幫助我,是我沒表述清楚。
8847,8847
前面是製錶符,其他類似的行都一樣。

要求是,如果上一行的首字母是字母L或R, 則緊鄰的下面幾行如果是製錶符開頭的,就要以 L 或 R開頭,并加上第二域的數字。第二域與第一,第三域是以逗號分隔的。

作者: Hanyeguxing     时间: 2010-3-30 13:39
@echo off&setlocal enabledelayedexpansion
for /f "tokens=1-3 delims=," %%i in (a.txt) do (set i=%%i
if not "!i:~0,1!"==" " (set "j=!i:~0,1!"&echo %%i,%%j,%%k)else echo !j!!i:~1!,!i:~1!,%%j)>>b.txt

源文件为a.txt,输出文件为b.txt
if not "!i:~0,1!"==" "中""之间的是一个制表符号,不是8个空格,切记!

Last edited by Hanyeguxing on 2010-3-30 at 13:44 ]

作者: haier168     时间: 2010-3-30 14:01
Y sure are SMART!
呵呵,結果完全正確,這正是我要的結果,慢慢學習!謝謝

暫不結貼,等等看還有沒有用 gawk, sed, grep 這類第三方命令行工具的,我也十分想知道。

Last edited by haier168 on 2010-3-30 at 14:27 ]