我正在尝试清理一个大的日志文件。每个文件中的前几个单词是日期,以mm / dd / yyyy hh:mm:ss为单位。如果该条目比当前日期晚六个月以上,那么我想将其从文件中删除。目前,我无限浏览这个巨大的文本文件。另外,程序应在找到当前日期后六个月内的日期后立即停止循环行。任何帮助都会很棒。我不认为循环正在获得下一行。
P.S。我对bash不太满意。
#!/bin/bash
sixmonths=15552000
infile=/home/user/Desktop/testfile1.log
currentDate=$(date +%s)
count=-1
#for line in $infile
while IFS= read -r line; do
#count=`expr $count + 1`
logDate=($line:0:19)
logDate=$(date --date="$logDate" +%s)
diff=`expr $currentDate - $logDate`
if [[ $diff -gt $sixmonths ]] then
count=`expr $count + 1`
echo $count
#sed -i '$countD' $infile
#echo deleting line
#sed -i '$line/d' ./$infile
else
echo STOPPING PROGRAM DONE!!!!!!!!!!!!
exit
fi
done < $infile
sed -i '0,$countd' $infile