联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
论坛里不乏多行拼接成一行的,偶数行奇数行拼接的代码 但一行分成多行的代码我至今没发现,我不是指那个for+delims 给个测试样本:1 86.2;2 90.0;3 87.8;4 83.4;5 88.0;6 84.1;7 83.2;8 80.6;9 74.0;10 73.7;11 71.5;12 72.7;13 70.4;14 75.0;15 72.1;16 80.0;17 75.4;18 83.7;19 87.0;20 88.0;21 85.6;22 81.1;23 90.0;24 88.7;25 89.6;26 86.1;27 75.5;28 81.6;29 80.1;30 88.0;31 72.2;32 77.6;33 80.0;34 72.9;35 72.6;36 70.5;37 78.0;38 69.5;39 72.4;40 72.4;41 74.3;42 74.4;43 80.0;44 88.1;45 88.5;46 90.9;47 94.0;48 89.0;49 94.2;50 97.0;51 90.0;52 95.2;以分号为分割符把上面的但行分成多行 要求:代码要具有通用性,可以生产临时文件。。。 6楼代码比较符合要求-----echo\替换行标志,很有思想。大家帮我加个分,我每分了。。。 8楼代码把变量用得也不错,很欣赏。。。以后那个shift+goto多行输出可以用for代替了(思想比较像4楼)大家也加个分吧。。。
1 86.2;2 90.0;3 87.8;4 83.4;5 88.0;6 84.1;7 83.2;8 80.6;9 74.0;10 73.7;11 71.5;12 72.7;13 70.4;14 75.0;15 72.1;16 80.0;17 75.4;18 83.7;19 87.0;20 88.0;21 85.6;22 81.1;23 90.0;24 88.7;25 89.6;26 86.1;27 75.5;28 81.6;29 80.1;30 88.0;31 72.2;32 77.6;33 80.0;34 72.9;35 72.6;36 70.5;37 78.0;38 69.5;39 72.4;40 72.4;41 74.3;42 74.4;43 80.0;44 88.1;45 88.5;46 90.9;47 94.0;48 89.0;49 94.2;50 97.0;51 90.0;52 95.2;
sed s/;/\n/g a.txt
@echo off for /f "delims=" %%a in (a.txt) do call :loop "%%a" pause :loop for /f "tokens=1* delims=;" %%i in ("%~1") do ( echo %%i if not "%%j"=="" call :loop "%%j" ) goto :eof
@echo off for /f "delims=" %%a in (a.txt) do call :loop "%%a" pause :loop set str=%~1 set str=%str:;=^&echo\% echo %str% goto :eof
@echo off & Setlocal EnableDelayedExpansion for /f "delims=" %%a in (cn-dos.txt) do ( set "string=%%a" for %%b in ("!string:;=" "!") do (echo.%%~b) )
Originally posted by terse at 2008-5-31 02:34 AM: 一行分成多行论坛上应该有的吧 可能你没注意
@echo off&setlocal set/p a=<1.txt for %%b in ("%a:;=" "%") do echo.%%~b
@echo off for /f "delims=" %%i in (1.txt) do ( set "str=%%i"&call :loop ) pause :loop set tmp=%str:*;=% if not defined tmp (echo %str:~0,-1%&goto :eof) call set mystr=%%str:%tmp%=%% echo %mystr:~0,-1%&set str=%tmp% if defined str goto loop