INPUT_FILE.txt 在 c:\Pro\usr\folder1
ABCDEFGH123456
ABCDEFGH123456
ABCDEFGH123456
BBCDEFGH123456
BBCDEFGH123456
在.SH運行的腳本中使用以下 AWK 命令c:\Pro\usr\folder2將檔案拆分為多個 txt 檔案,擴展名為_kg基于第一個8字符。
awk '{ F=substr($0,1,8) "_kg" ".txt"; print $0 >> F; close(F) }' ' "c:\Pro\usr\folder1\input_file.txt"
這很好用,但是檔案正在寫入 bash 指向的主要位置。如何將創建的檔案路由到另一個位置,例如c:\Pro\usr\folder3.
謝謝
uj5u.com熱心網友回復:
以下awk代碼可以幫助您使用 GNU 中顯示的示例進行相同、撰寫和測驗awk。
awk -v outPath='c:\\Pro\\usr\\folder3' -v FPAT='^.{8}' '{outFile=($1"_kg.txt");outFile=outPath"\\"outFile;print > (outFile);close(outFile)}' Input_file
說明:創建一個awk名為的變數outPath,該變數具有 OP 在示例中提到的路徑。然后設定FPAT(欄位分隔符設定為正則運算式),我從第一個字符開始創建 8 個字符的欄位。在 的主程式中awk,創建outFile其中包含輸出檔案名的變數(第一個欄位后跟 _kg.txt),然后將整行列印到輸出檔案并在后端關閉輸出檔案以避免“打開的檔案過多”錯誤。
uj5u.com熱心網友回復:
將目標檔案夾作為變數傳遞給 awk:
awk -v dest='c:\\Pro\\usr\\folder3\\' '{F=dest substr($0,1,8) "_kg" ".txt"; print $0 >> F; close(F) }' "c:\Pro\usr\folder1\input_file.txt"
我認為雙反斜杠是必需的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/407167.html
標籤:
