我有一个异常结构的文件,我试图根据填充的第一列($ 1)将其拆分为多个文件。基本上它是文件的每个“部分”的标题。
该列没有任何模式,因此random_text_1和random_text_2作为列名,因此我无法使用模式匹配...
示例文件......
random_text_1,col_2,col_3,col_4,col_5
,1,a,"1, a",abc
,2,,"2",abc
,3,c,"3,c",def
random_text2,col_2,col_3,col_4,col_5
,1,x,"2, x",abcdef
,2,,"2",abcdef
,3,y,"3,y",defefg
我想把文件分成'块',即
一个档案就是......
random_text_1,col_2,col_3,col_4,col_5
,1,a,"1, a",abc
,2,,"2",abc
,3,c,"3,c",def
另一个......
random_text2,col_2,col_3,col_4,col_5
,1,x,"2, x",abcdef
,2,,"2",abcdef
,3,y,"3,y",defefg
如果我做了类似这样的事情,它会分割文件,但只会删除“标题”的内容,如果我执行$ 1!=“”它只是在单独的文件中给我标题...
awk 'BEGIN { OFS = ","; FPAT = "([^" OFS "]*)|(\"[^\"]+\")"} $1=="" { print $0 > "output-file" $1 } ' test-file.csv
答案 0 :(得分:2)
awk -F, '$1!=""{close(out); out="out"++c} {print > out}' file
如果您正在使用gawk,则不需要close(out)
,因为它会在您需要时处理关闭文件。
输出文件名称赋值out="output-file" $1
根据标题行$1
命名输出文件,如您所愿,如果您愿意,我无法从您的输入中判断是否会创建是否有独特的文件,我知道上面会这样做。