我有一个可以大于4GB的文件。我使用linux split命令将其拆分成行(这是必需的)。但是,在拆分原始文件之后,我希望拆分文件的大小始终小于2GB。原始文件大小可以从3-5 GB不等。我想在shell脚本中为此编写一些逻辑,并将行数输入到下面的split命令中,以便将拆分的文件大小保持在2GB以下。
split -l 100000 -d abc.txt abc发布于 2016-01-05 00:56:13
我就是这样解决这个问题的。很抱歉把解决方案发得晚了。
1.声明了一个全局变量DEFAULT_SPLITFILE_SIZE= 1.5Gb
DEFAULT_SPLITFILE_SIZE=15000000002.计算出文件中的行数.
LINES_IN_FILE=`wc -l $file | awk '{print $1}'`
echo `date` "Total word count = ${LINES_IN_FILE}."3.计算文件的大小.
FILE_SIZE=`stat -c %s "${file}"`4.文件中每一行的计算大小.
SIZE_PER_LINE=$(( FILE_SIZE / LINES_IN_FILE ))
echo `date` "Bytes Per Line = $SIZE_PER_LINE"5.计算了使其成为1.5gb拆分文件所需的行号.
SPLIT_LINE=$(( DEFAULT_SPLITFILE_SIZE / SIZE_PER_LINE ))
echo `date` "Lines for Split = $SPLIT_LINE"发布于 2015-08-15 03:00:50
在发布问题之前,最好先参考手册。Split命令提供了按字节拆分文件的选项。下面是您可以在拆分命令的手册页面中找到的选项。
-b, --bytes=SIZE put SIZE bytes per output file
split --bytes=1500000000 abc.txt abc您不需要显式指定行数。这个命令符合你的目的。
https://stackoverflow.com/questions/32019927
复制相似问题