【发布时间】:2017-02-21 21:29:17
【问题描述】:
我有以下源文件(~10GB),我需要分成几个小文件(每个
Inout.csv
Src,AgentNum,PhoneNum
DWH,Agent_1234,phone1
NULL,NULL,phone2
NULL,NULL,phone3
DWH,Agent_5678,phone1
NULL,NULL,phone2
NULL,NULL,phone3
DWH,Agent_9999,phone1
NULL,NULL,phone2
NULL,NULL,phone3
Output1.csv
Src,AgentNum,PhoneNum
DWH,Agent_1234,phone1
NULL,NULL,phone2
NULL,NULL,phone3
Output2.csv
Src,AgentNum,PhoneNum
DWH,Agent_5678,phone1
NULL,NULL,phone2
NULL,NULL,phone3
DWH,Agent_9999,phone1
NULL,NULL,phone2
NULL,NULL,phone3
#!/bin/bash
#Calculate filesize in bytes
FileSizeBytes=`du -b $FileName | cut -f1`
#Check for the file size
if [[ $FileSizeBytes -gt 100000000 ]]
then
echo "Filesize is greater than 100MB"
NoOfLines=`wc -l < $FileName`
AvgLineSize=$((FileSizeBytes / NoOfLines))
LineCountInEachFile=$((100000000 / AvgLineSize))
#Section for splitting the files
else
echo "Filesize is already less than 100MB. No splitting needed"
exit 0
fi
我是 UNIX 新手,但我自己尝试这个 bash 脚本并且有点卡在拆分文件上。我不希望有人给我一个完整的脚本,我正在寻找任何简单的方法/建议,可能使用其他简单的替代方案,如 sed 等。非常感谢!
【问题讨论】:
-
您可以使用 perl 吗?如果没有,你可以试试 awk。
-
目前我只能在当前项目中使用 shell 脚本。但是,如果您有珍珠解决方案,我可以肯定地尝试。谢谢!