假设我有一行名为file100.csv的101行文件,第一行是标题。我希望能够将该文件拆分为10个名为N.file100.csv的1 + 10行文件,其中N = 1-10,并且标题作为第一行添加到所有10个文件
到目前为止,我可以隔离标题并拆分文件没问题:
head -n 1 file100.csv > tmpHeader
tail -n +2 file100.csv | awk '{filename = int((NR-1)/10)+1 ".file100.csv"; print >> filename}' -
我遇到的问题是将该头文件作为第一行附加到所有后续10个文件中。
答案 0 :(得分:0)
将其余行打印成当前文件名: NR!= 1 {print>> filename}
cat file100.csv | awk' NR == 1 {head = $ 0} NR%5 == 2 {filename = int((NR-1)/ 5)+1" .file100.csv&#34 ;;打印头> filename} NR!= 1 {print>> filename}'
答案 1 :(得分:0)
awk 'NR==1 {a=$0; next} (NR-2)%10==0 {filename = int((NR-2)/10)+1 ".file100.csv"; print a >> filename} {print >> filename}' file100.csv
<强>解释强>
NR==1 {a=$0; next}
读取文件的第一行,并将标头存储在变量a
中。(NR-2)%10==0 {filename = int((NR-2)/10)+1 ".file100.csv"; print a >> filename}
生成文件名,与命令中的文件名相同。我们只需要在文件名更改时写入标头。这是第10行,考虑到标题的偏移量。{print >> filename}
将每行打印到当前文件。