【问题标题】:AWK - splitting a multiple header file into separate files?AWK - 将多个头文件拆分为单独的文件?
【发布时间】:2017-08-17 13:25:33
【问题描述】:

我有一个结构异常的文件,我试图根据填充的第一列 ($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

【问题讨论】:

    标签: awk


    【解决方案1】:
    awk -F, '$1!=""{close(out); out="out"++c} {print > out}' file
    

    如果您使用 gawk,则不需要 close(out),因为它会在您需要时处理关闭文件。

    将输出文件名分配out="output-file" $1 以根据标题行$1 命名输出文件,如果您愿意,我无法从您的输入中判断这是否会创建唯一文件虽然我知道上面会这样做。

    【讨论】:

    • 太棒了!谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 2016-08-01
    • 1970-01-01
    • 2019-11-17
    • 2016-02-07
    • 2015-05-25
    相关资源
    最近更新 更多