使用shell脚本在Unix中批量写入

时间:2017-10-23 10:37:48

标签: shell unix

有没有办法在shell脚本中的文件中编写批量数据,而不是在文件中逐行编写代码?

在下面的脚本中,我想在test.csv文件中写入文件的到达时间和生成时间之间的区别。

########################################################
echo "Starting the Execution for Time difference\n";
############################################################
# Functions used across the script
datediff() {
    Unixtime=`echo $1 $2 $3 $4`
    Filetime=`echo $5 $6 $7 $8`
    echo $Unixtime;
    echo $Filetime;
    d1=`date -d "$Unixtime" +%s`
    d2=`date -d "$Filetime" +%s`
    echo  $d1;
    echo  $d2;
    TIME_DIFF=`expr $d1 - $d2`
    TIME_DIFF=`expr $TIME_DIFF / 60`
    echo $TIME_DIFF;
    echo "$Unixtime,$Filetime,$TIME_DIFF,$9" >> ../test.csv
}
rm -f ../test.csv;
for i in `ls -1 | grep -v 'DelayCheck.s*'`
do
DayMonth=`ls -lrt $i | awk '{print $7" "$6" "}'`
Year=`ls --full-time $i | awk '{print $6}' | cut -c1-4`
HourMin=`ls -lrt $i | awk '{print " "$8}'`
timeA=`echo $DayMonth $Year $HourMin`
FileYearMonDay=`ls -ltr $i | awk '{print $9}' | awk -F'--' '{print $3}' | cut 
-c2-9`
timeB1=`date -d $FileYearMonDay +'%d %b %Y'`
timeB2=`echo $i | awk -F'--' '{print substr($3,10,13)}' | sed -e 
's/../:&/2g'`
timeB=`echo $timeB1 $timeB2`
echo "Time A is $timeA";
echo " Time b is $timeB";
datediff $timeA $timeB $i
done
echo $?;

脚本工作正常,但问题是有超过100k的文件。因此脚本性能很差。

我曾试图搜索是否有任何方法可以在文件中写入批量数据,但我没有找到任何解决方案。

0 个答案:

没有答案