sh 将带有标题行的CSV /文本类型文件拆分为多个文件,并将标题行复制到每个文件中。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sh 将带有标题行的CSV /文本类型文件拆分为多个文件,并将标题行复制到每个文件中。相关的知识,希望对你有一定的参考价值。

#!/bin/bash
# Split files with Header intact
#
# $1 is File to Split
# $2 is Number of lines in each split.
# $3 (optional) is split File Prefix
#
if [ "$1" == "" ]; then
  echo $'\n'
  echo 'ERROR: Param 1 is FileName to split' $'\n'
  echo '       Param 2 is number of lines for each split file.' $'\n\n'
  echo '       Param 3 is Split filename prefix.' $'\n\n'
  exit
fi
if [ "$2" == "" ]; then
  echo $'\n'
  echo 'ERROR: Param 1 is FileName to split' $'\n'
  echo '       Param 2 is number of lines for each split file.' $'\n\n'
  echo '       Param 3 is Split filename prefix.' $'\n\n'
  exit
fi
echo Run the script.

tail -n +2 $1 | split -l $2 - _S_
for file in _S_*
do
    head -n 1 $1> _SX_tmp_file
    cat $file>> _SX_tmp_file
    mv -f _SX_tmp_file $1.$file.csv
done

rm _S_*

以上是关于sh 将带有标题行的CSV /文本类型文件拆分为多个文件,并将标题行复制到每个文件中。的主要内容,如果未能解决你的问题,请参考以下文章