如何根据行间距将csv文件解析为多个csv
How to parse csv file into multiple csv based on row spacing
我正在尝试构建气流 DAG,需要将一个 csv 中包含的 7 个表拆分为七个单独的 csv。
dataset1
header_a
header_b
header_c
One
Two
Three
One
Two
Three
<-Always two spaced rows between data sets
dataset N
<-提供数据详细信息的 csv 文件的一部分
header_d
header_e
header_f
header_g
One
Two
Three
Four
One
Two
Three
Four
out
:
dataset1.csv
datasetn.csv
根据我的研究,我认为我的解决方案可能在于 awk
搜索双空格?
编辑:按要求使用纯文本。
table1 details1,
table1 details2,
table1 details3,
header_a,header_b,header_c,
1,2,3
1,2,3
tableN details1,
tableN details2,
tableN details3,
header_a, header_b,header_c,header_N,
1,2,3,4
1,2,3,4
Always two spaced rows between data sets
如果您的 CSV 文件包含空行,并且您的目标是将由这些空行分隔的每个记录块写出到单独的文件中,那么您可以使用 awk
及其记录分隔符 RS
设置为空,然后默认将每个“段落”视为一条记录。然后可以将它们中的每一个重定向到一个文件,该文件的名称基于记录号 NR
:
awk -vRS= '{print [=10=] > ("output_" NR ".csv")}' input.csv
这从 input.csv
读取并将块写入 output_1.csv
、output_2.csv
、output_3.csv
等等。
如果我对您的输入文件结构(或您的一般问题)的解释有误,请提供更多详细信息以进行澄清。
我正在尝试构建气流 DAG,需要将一个 csv 中包含的 7 个表拆分为七个单独的 csv。
dataset1
header_a | header_b | header_c |
---|---|---|
One | Two | Three |
One | Two | Three |
<-Always two spaced rows between data sets
dataset N
<-提供数据详细信息的 csv 文件的一部分
header_d | header_e | header_f | header_g |
---|---|---|---|
One | Two | Three | Four |
One | Two | Three | Four |
out
:
dataset1.csv
datasetn.csv
根据我的研究,我认为我的解决方案可能在于 awk
搜索双空格?
编辑:按要求使用纯文本。
table1 details1,
table1 details2,
table1 details3,
header_a,header_b,header_c,
1,2,3
1,2,3
tableN details1,
tableN details2,
tableN details3,
header_a, header_b,header_c,header_N,
1,2,3,4
1,2,3,4
Always two spaced rows between data sets
如果您的 CSV 文件包含空行,并且您的目标是将由这些空行分隔的每个记录块写出到单独的文件中,那么您可以使用 awk
及其记录分隔符 RS
设置为空,然后默认将每个“段落”视为一条记录。然后可以将它们中的每一个重定向到一个文件,该文件的名称基于记录号 NR
:
awk -vRS= '{print [=10=] > ("output_" NR ".csv")}' input.csv
这从 input.csv
读取并将块写入 output_1.csv
、output_2.csv
、output_3.csv
等等。
如果我对您的输入文件结构(或您的一般问题)的解释有误,请提供更多详细信息以进行澄清。