2017-04-23 19 views
0

我有一個超過20M行的管道分隔文件。在第四列中我有一個日期字段。我必須從日期字段中取出部分值(YYYYMM),並將匹配的數據寫入一個將它附加到文件名的新文件。感謝您的所有輸入。模式匹配並創建多個文件LINUX

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 

回答

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 
+0

非常感謝該溶液中,在詳細說明每個步驟。 Awk簡直太神奇了。只是好奇;是否有可能在我們分割時從輸出文件中取出第4列? – RCL

+0

當然。你只需要定義'-v OFS ='|''和'print $ 1,$ 2,$ 3,$ 5 >> f' –