我想快速将csv文件拆分成N个大致相等的部分,并使每个部分都将原始标题作为第一行.到目前为止,我已经提出了这个,它有效(N = 5):
split -da 4 -l $((`wc -l < foo.csv`/5)) foo.csv foo --additional-suffix=".csv"
for f in `ls foo0*.csv`;do sed -i "1s/^/`head -n 1 foo.csv`\n/" $f; done;
Run Code Online (Sandbox Code Playgroud)
有没有人知道如何把它变成一个单行,我通过拆分到for循环而不是运行ls命令来提供新创建的文件.
谢谢!
你根本不需要for循环.你可以这样做:
sed -i "1s/^/`head -n 1 foo.csv`\n/" foo0*.csv
Run Code Online (Sandbox Code Playgroud)
我不认为你可以通过提供新创建的文件,sed
因为split
没有给你新的文件名.
如果你真的想要一个单行,你可以加入这两个语句&&
:
split -da 4 -l $((`wc -l < foo.csv`/5)) foo.csv foo --additional-suffix=".csv" && sed -i "1s/^/`head -n 1 foo.csv`\n/" foo0*.csv
Run Code Online (Sandbox Code Playgroud)