
又一次多文件批處理替換連表達式都想不出來求幫忙最后由 觀心 于 -6-27 10:50在股票數(shù)據(jù)轉(zhuǎn)換當中又碰到問題:一個文件名為 SZ000002.TXT的文本內(nèi)容為:2007/11/01;23.37;24.49;22.87;23.69;95782978;3782251008.0002007/11/02;38.70;40.66;38.21;39.05;62871777;2495787520.000數(shù)據(jù)來源:通達信中間許多行,這里只取最后3行,要實現(xiàn)如下格式并且文件名改為000002.txt$FORMAT Ticker, Date_YMD, Open, High, Low, Close, Volume000002.SZ,2007-11-01,23.37,24.49,22.87,23.6,957829000002.SZ,2007-11-02,38.7,40.66,38.21,39.05,628717$SKIPLINES 1$SEPARATOR ,$DEBUG 1$BREAKonERR 1$AUTOADD 1目錄下幾千個文件都要這樣改,求老師和前輩幫忙實現(xiàn)。自己能力淺薄,我用sed gawk連將文件名000002寫入到文本內(nèi)容中都弄不出來,慚愧啊!最后由 觀心 于 -6-27 01:06 0627 更新經(jīng)過幾天論壇上神人們的關(guān)心 鄙人的問題得到完美解決 在此結(jié)貼 謝謝大家的關(guān)心和耐心在下機器的基本配置 I3 12G非常感謝 PowerShell 的熱情和執(zhí)著 因為net framework 4.5.2沒有裝好 c:盤空間竟然不夠需要2836MB 可用1403MB 時間匆忙因此沒有測試 等后天用2003在ramos中測試看行不行其次感謝 terse 全程跟蹤的默默關(guān)心和付出您的代碼測試需要2分鐘左右 最終選擇了您的代碼常用 謝謝還有 CrLf 麻煩閣下費了許多心思 因為在下的學識淺薄 一個問題難以描述清楚 謝謝您的不厭其煩 讓我獲益良多 您的代碼測試需要3分鐘左右 還要感謝 apang 最后的絕殺一劍您的代碼在機器上用了2分鐘左右 雖然SH 和SZ沒有分別表示 但是將未處理的文件都考慮到了 謝謝您的細心最后再完整的描述一下鄙人的問題 有兩種字符開頭的文本文件(源文件藏在#19最后)1、以SH開頭的文本比如 SH600099.TXT2、以SZ開頭的文本比如 SZ000099.TXT其中 1、以SH開頭的文本比如 SH600099.TXT 格式如下,最后一行以“數(shù)據(jù)來源:”結(jié)束。2003/08/01;5.86;5.94;5.84;5.91;757319;6021637.0002003/08/04;5.95;6.14;5.91;6.03;1491738;1611.0002003/08/05;6.03;6.12;5.93;5.98;1783220;14456444.0002003/08/06;5.93;6.06;5.93;5.93;608200;4914825.0002003/08/07;5.94;6.01;5.92;5.93;490916;3944958.0002003/08/08;5.95;5.99;5.78;5.83;893227;7121715.0002003/08/11;5.80;5.84;5.79;5.80;215771;1688739.0002003/08/12;5.79;5.86;5.79;5.85;298740;2343791.0002003/08/13;5.84;5.87;5.78;5.81;177700;1396385.0002003/08/14;5.86;5.92;5.78;5.78;114259;895077.0002003/08/15;5.87;5.87;5.77;5.84;546519;4263697.0002003/08/18;5.78;5.80;5.78;5.78;45000;351128.0002003/08/19;5.84;5.84;5.78;5.79;101390;792405.0002003/08/20;5.79;5.83;5.74;5.80;69170;539040.0002003/08/21;5.84;5.84;5.74;5.79;53620;417572.0002003/08/22;5.79;5.84;5.74;5.79;76800;599503.0002003/08/25;5.80;5.82;5.74;5.77;91848;715345.0002003/08/26;5.79;5.79;5.73;5.77;108367;841339.0002003/08/27;5.77;5.77;5.72;5.74;58160;450937.0002003/08/28;5.71;5.86;5.67;5.81;315739;2458913.0002003/08/29;5.84;5.84;5.67;5.69;231281;1794956.000數(shù)據(jù)來源:轉(zhuǎn)換成600099.txt (也就是SH600099.TXT文件名前面的SH 去掉) 格式如下:$FORMAT Ticker, Date_YMD, Open, High, Low, Close, Volume600099.SH,2003-08-01,5.86,5.94,5.85,5.91,757319600099.SH,2003-08-04,5.95,6.14,5.91,6.03,1491738600099.SH,2003-08-05,6.03,6.12,5.93,5.98,1783220600099.SH,2003-08-06,5.94,6.06,5.93,5.94,608200600099.SH,2003-08-07,5.94,6.01,5.92,5.93,490916600099.SH,2003-08-08,5.95,5.99,5.79,5.83,893227600099.SH,2003-08-11,5.8,5.85,5.8,5.8,215771600099.SH,2003-08-12,5.8,5.86,5.8,5.85,298740600099.SH,2003-08-13,5.85,5.88,5.79,5.82,177700600099.SH,2003-08-14,5.87,5.92,5.79,5.79,114259600099.SH,2003-08-15,5.88,5.88,5.78,5.85,546519600099.SH,2003-08-18,5.79,5.8,5.79,5.79,45000600099.SH,2003-08-19,5.85,5.85,5.79,5.8,101390600099.SH,2003-08-20,5.8,5.84,5.75,5.8,69170600099.SH,2003-08-21,5.85,5.85,5.75,5.8,53620600099.SH,2003-08-22,5.8,5.85,5.75,5.8,76800600099.SH,2003-08-25,5.8,5.82,5.74,5.77,91848600099.SH,2003-08-26,5.8,5.8,5.74,5.77,108367600099.SH,2003-08-27,5.78,5.78,5.73,5.74,58160600099.SH,2003-08-28,5.71,5.87,5.68,5.82,315739600099.SH,2003-08-29,5.85,5.85,5.68,5.7,231281$SKIPLINES 1$SEPARATOR ,$DEBUG 1$BREAKonERR 1$AUTOADD 12、以SZ開頭的文本比如 SZ000099.TXT 格式如下,最后一行以“數(shù)據(jù)來源:”結(jié)束。2003/08/01;5.86;5.94;5.84;5.91;757319;6021637.0002003/08/04;5.95;6.14;5.91;6.03;1491738;1611.0002003/08/05;6.03;6.12;5.93;5.98;1783220;14456444.0002003/08/06;5.93;6.06;5.93;5.93;608200;4914825.0002003/08/07;5.94;6.01;5.92;5.93;490916;3944958.0002003/08/08;5.95;5.99;5.78;5.83;893227;7121715.0002003/08/11;5.80;5.84;5.79;5.80;215771;1688739.0002003/08/12;5.79;5.86;5.79;5.85;298740;2343791.0002003/08/13;5.84;5.87;5.78;5.81;177700;1396385.0002003/08/14;5.86;5.92;5.78;5.78;114259;895077.0002003/08/15;5.87;5.87;5.77;5.84;546519;4263697.0002003/08/18;5.78;5.80;5.78;5.78;45000;351128.0002003/08/19;5.84;5.84;5.78;5.79;101390;792405.0002003/08/20;5.79;5.83;5.74;5.80;69170;539040.0002003/08/21;5.84;5.84;5.74;5.79;53620;417572.0002003/08/22;5.79;5.84;5.74;5.79;76800;599503.0002003/08/25;5.80;5.82;5.74;5.77;91848;715345.0002003/08/26;5.79;5.79;5.73;5.77;108367;841339.0002003/08/27;5.77;5.77;5.72;5.74;58160;450937.0002003/08/28;5.71;5.86;5.67;5.81;315739;2458913.0002003/08/29;5.84;5.84;5.67;5.69;231281;1794956.000數(shù)據(jù)來源:轉(zhuǎn)換成000099.txt (也就是SZ000099.TXT文件名前面的SZ 去掉) 格式如下:$FORMAT Ticker, Date_YMD, Open, High, Low, Close, Volume000099.SZ,2003-08-01,5.86,5.94,5.85,5.91,757319000099.SZ,2003-08-04,5.95,6.14,5.91,6.03,1491738000099.SZ,2003-08-05,6.03,6.12,5.93,5.98,1783220000099.SZ,2003-08-06,5.94,6.06,5.93,5.94,608200000099.SZ,2003-08-07,5.94,6.01,5.92,5.93,490916000099.SZ,2003-08-08,5.95,5.99,5.79,5.83,893227000099.SZ,2003-08-11,5.8,5.85,5.8,5.8,215771000099.SZ,2003-08-12,5.8,5.86,5.8,5.85,298740000099.SZ,2003-08-13,5.85,5.88,5.79,5.82,177700000099.SZ,2003-08-14,5.87,5.92,5.79,5.79,114259000099.SZ,2003-08-15,5.88,5.88,5.78,5.85,546519000099.SZ,2003-08-18,5.79,5.8,5.79,5.79,45000000099.SZ,2003-08-19,5.85,5.85,5.79,5.8,101390000099.SZ,2003-08-20,5.8,5.84,5.75,5.8,69170000099.SZ,2003-08-21,5.85,5.85,5.75,5.8,53620000099.SZ,2003-08-22,5.8,5.85,5.75,5.8,76800000099.SZ,2003-08-25,5.8,5.82,5.74,5.77,91848000099.SZ,2003-08-26,5.8,5.8,5.74,5.77,108367000099.SZ,2003-08-27,5.78,5.78,5.73,5.74,58160000099.SZ,2003-08-28,5.71,5.87,5.68,5.82,315739000099.SZ,2003-08-29,5.85,5.85,5.68,5.7,231281$SKIPLINES 1$SEPARATOR ,$DEBUG 1$BREAKonERR 1$AUTOADD 1轉(zhuǎn)換要求:除了改文件名外,文本內(nèi)容就是將源文本中第一行加上$FORMAT Ticker, Date_YMD, Open, High, Low, Close, Volume文本中間 每一行以文件名中的數(shù)字開頭 如:000099 接著顯示文件名中的字符 如:SZ或SH (根據(jù)文件名前兩個字符而定)然后轉(zhuǎn)換日期的格式 然后將分號改為逗號 然后去掉每一行最后分號后面的所有字符最后一行替換成$SKIPLINES 1$SEPARATOR ,$DEBUG 1$BREAKonERR 1$AUTOADD 1以上 完美獲得解決 感謝關(guān)心此帖的幾位大佬 apang CrLf PowerShell terse 謝謝你們!!!希望批處理之家合家歡樂 和諧安詳!!!

