kum*_*mar 3 linux shell shell-script csv
我正在尝试通过以下命令拆分 csv 文件-sample.csv。
split -n 2 -a 1 -d sample.csv test_
Run Code Online (Sandbox Code Playgroud)
我得到两个大小相等的文件,一个带有标题,另一个没有标题,并且末尾的行被修剪掉。
当我看到下面的脚本时,结果显示在终端上,但没有生成文件。
split -n 1/2 -a 1 -d sample.csv test_
Run Code Online (Sandbox Code Playgroud)
看起来这两个命令都按照设计的那样工作。
\n第一个分割是按字节进行的,当你分割一个大的二进制对象时,它不会考虑行 \xe2\x80\x94 ,而当它是像 CSV 这样的东西时,就不那么有用了。
\n第二个看起来像是对文档的误读(但在技术上仍然有效)。
\n我认为你的意思是这样做:
\nsplit -n l/2 -a 1 -d sample.csv test_\n
Run Code Online (Sandbox Code Playgroud)\n请注意,这lower case L slash two
并不one slash two
像您看起来所做的那样。
您不会在第二部分看到标题行,因为split
它并不真正了解内容。
一种方法是做这样的事情
\n# extract header row and save\nhead -n1 sample.csv > header\n# skip header row and split records to temporary files\ntail -n+2 sample.csv | split -n l/2 -a 1 -d temp_\n# make final files from header and split records\nfor f in temp_? ; do\n cat header "$f" > "${f/temp/test}"\n # clean up temporary file\n rm "$f"\ndone\n# clean up header file\nrm header\n
Run Code Online (Sandbox Code Playgroud)\n