
【已解決】gawk中間數據通過管道傳遞后出錯如何修改最后由 思想之翼 于 -3-19 02:18
上列代碼經過修改后,去除了DATA.txt和DATA2.txt的生成和刪除步驟,通過管道傳遞數據,減少磁盤IO。但是存在問題,雙擊XX.bat運行后,出現找不到Z:KZ011A.txt ... 的問題,如何解決?nclick="copycode($('code0'));">復制代碼
- @echo off
- setlocal enabledelayedexpansion
- for /l %%d in (10000,1,10099) do (
- set o=%%d
- for /l %%e in (100000,1,100099) do (
- set p=%%e
- gawk -F= NR==FNR{B[i++]=$0;next}{A[$1]=$2}END{for(i=0;i<length(B);i++){print A[B[i]]}} Z:QWSSJ!o:~1!1234_01.txt Z:SJKZYB!p:~1!.txt > Z:KZ01DATA.txt
- gawk NR%%10==1{close(Z:/KZ/001/nA.txt);++n}{print>Z:/KZ/001/nA.txt} Z:KZ01DATA.txt
- del /q Z:KZ01DATA.txt >nul 2>&1
- for %%a in (1 2 3 4) do (
- gawk -F= -v tab=t BEGIN{A[t]=t}NR==FNR{A[$1]=$2;next}{c=split($0,B,//);printf A[B[1]];t1=A[B[i]];for(i=2;i<=c;i++){((A[B[i]]~tab)||(t1~tab))?t=1:t=0;printf(t?%%s: %%s,A[B[i]]);t1=A[B[i]]};print } Z:SJHY4%%a.txt Z:KZ01%%aA.txt > Z:KZ01DATA2.txt
- gawk -F t+ {for(i=1;i<=NF;++i)print $i>>Z:/KZ/001/i.txt} Z:KZ01DATA2.txt
- del /q Z:KZ01%%aA.txt Z:KZ01DATA2.txt >nul 2>&1
- )
- )
- )
- endlocal
nclick="copycode($('code1'));">復制代碼
- @echo off
- setlocal enabledelayedexpansion
- for /l %%d in (10000,1,10000) do (
- set o=%%d
- for /l %%e in (100000,1,100000) do (
- set p=%%e
- Z:KZ03gawk.exe -F= NR==FNR{B[i++]=$0;next}{A[$1]=$2}END{for(i=0;i<length(B);i++)print A[B[i]]} Z:QWSSJ!o:~1!1236_03.txt Z:SJKZYB!p:~1!.txt | Z:KZ03gawk.exe NR%%10==1{close(Z:/KZ/003/nA.txt);++n}{print>Z:/KZ/003/nA.txt}
- for %%a in (1 2 3 4) do (
- Z:KZ03gawk.exe -F= -v tab=t BEGIN{A[t]=t}NR==FNR{A[$1]=$2;next}{c=split($0,B,//);printf A[B[1]];t1=A[B[1]];for(i=2;i<=c;i++){t=((A[B[i]]~tab)||(t1~tab))?1:0;printf(t?%%s: %%s,A[B[i]]);t1=A[B[i]]};print } Z:SJHY4%%a.txt Z:KZ03%%aA.txt | Z:KZ03gawk.exe -F t+ {for(i=1;i<=NF;i++)print $i>>Z:/KZ/003/i.txt}
- del /q Z:KZ03%%aA.txt >nul 2>&1
- )
- )
- )
- endlocal

