使用 AWK 拆分和写入文件 -Bash
split and write the files with AWK -Bash
INPUT_FILE.txt
在 c:\Pro\usr\folder1
ABCDEFGH123456
ABCDEFGH123456
ABCDEFGH123456
BBCDEFGH123456
BBCDEFGH123456
在从 c:\Pro\usr\folder2
运行的 .SH
脚本中使用了以下 AWK 命令,根据第一个 8
将文件拆分为多个扩展名为 _kg
的 txt 文件字符。
awk '{ F=substr([=12=],1,8) "_kg" ".txt"; print [=12=] >> F; close(F) }' ' "c:\Pro\usr\folder1\input_file.txt"
这工作正常,但文件正在写入 bash 指向的主要位置。如何将创建的文件路由到另一个位置,例如 c:\Pro\usr\folder3
.
谢谢
将目标文件夹作为变量传递给 awk:
awk -v dest='c:\Pro\usr\folder3\' '{F=dest substr([=10=],1,8) "_kg" ".txt"; print [=10=] >> F; close(F) }' "c:\Pro\usr\folder1\input_file.txt"
我认为双反斜杠是必需的。
以下 awk
代码可能会帮助您在 GNU awk
.
中使用所示示例编写和测试相同的代码
awk -v outPath='c:\Pro\usr\folder3' -v FPAT='^.{8}' '{outFile=("_kg.txt");outFile=outPath"\"outFile;print > (outFile);close(outFile)}' Input_file
说明: 创建一个名为 outPath
的 awk
变量,它具有样本中 OP 提到的路径。然后设置 FPAT
(字段分隔符设置为正则表达式),我从第一个字符开始创建 8 个字符的字段。在 awk
的主程序中,创建 outFile
变量,其中包含输出文件名(第一个字段后跟 _kg.txt),然后将整行打印到输出文件并在后端关闭输出文件以避免“打开的文件太多”错误。
INPUT_FILE.txt
在 c:\Pro\usr\folder1
ABCDEFGH123456
ABCDEFGH123456
ABCDEFGH123456
BBCDEFGH123456
BBCDEFGH123456
在从 c:\Pro\usr\folder2
运行的 .SH
脚本中使用了以下 AWK 命令,根据第一个 8
将文件拆分为多个扩展名为 _kg
的 txt 文件字符。
awk '{ F=substr([=12=],1,8) "_kg" ".txt"; print [=12=] >> F; close(F) }' ' "c:\Pro\usr\folder1\input_file.txt"
这工作正常,但文件正在写入 bash 指向的主要位置。如何将创建的文件路由到另一个位置,例如 c:\Pro\usr\folder3
.
谢谢
将目标文件夹作为变量传递给 awk:
awk -v dest='c:\Pro\usr\folder3\' '{F=dest substr([=10=],1,8) "_kg" ".txt"; print [=10=] >> F; close(F) }' "c:\Pro\usr\folder1\input_file.txt"
我认为双反斜杠是必需的。
以下 awk
代码可能会帮助您在 GNU awk
.
awk -v outPath='c:\Pro\usr\folder3' -v FPAT='^.{8}' '{outFile=("_kg.txt");outFile=outPath"\"outFile;print > (outFile);close(outFile)}' Input_file
说明: 创建一个名为 outPath
的 awk
变量,它具有样本中 OP 提到的路径。然后设置 FPAT
(字段分隔符设置为正则表达式),我从第一个字符开始创建 8 个字符的字段。在 awk
的主程序中,创建 outFile
变量,其中包含输出文件名(第一个字段后跟 _kg.txt),然后将整行打印到输出文件并在后端关闭输出文件以避免“打开的文件太多”错误。