模式匹配并创建多个文件LINUX

时间:2017-04-23 04:41:40

标签: unix

我有一个超过20M行的管道分隔文件。在第4列,我有一个日期字段。我必须从日期字段中取出部分值(YYYYMM)并将匹配数据写入附加到文件名的新文件。感谢您的所有投入。

Inputfile.txt
XX|1234|PROCEDURES|20160101|RC
XY|1634|PROCEDURES|20160115|RC
XM|1245|CODES|20170124|RC
XZ|1256|CODES|20170228|RC

OutputFile_201601.txt
XX|1234|PROCEDURES|20160101|RC
XY|1634|PROCEDURES|20160115|RC

OutputFile_201701.txt
XM|1245|CODES|20170124|RC

OutputFile_201702.txt
XZ|1256|CODES|20170228|RC

1 个答案:

答案 0 :(得分:0)

使用awk:

$ awk -F\| '{f="outputfile_" substr($4,1,6) ".txt"; print >> f ; close (f)}' file
$ ls outputfile_201*
outputfile_201601.txt  outputfile_201701.txt  outputfile_201702.txt

说明:

$ awk -F\| '                               # pipe as delimiter
{
    f="outputfile_" substr($4,1,6) ".txt"  # form output filename
    print >> f                             # append record to file
    close(f)                               # close output file 
}' file