尝试读取stage.txt并列出所有超过10分钟的文件,但不知何故,我的输出是重复的,并没有回显正确的行与旧的时间。有没有可能的方法来保留和打印值,因为我已经用awk操作的数据?/tmp/stage.txt
-rw-r--r-- 1 admin admin 3046 Apr 9 15:20 /opt/1.txt
-rw-r--r-- 1 admin admin 3046 Apr 9 15:20 /opt/2.txt
-rw-r--r-- 1 admin admin 3046 Apr 9 15:20 /opt/3.txt
-rw-r--r-- 1 admin admin 3046 Apr 9 15:31 /opt/4.txt
验证码:
##current time = 15:40
while IFS= read -r line
do
diffstg="10"
timeminstg=`echo $line |awk -F" " '{print $8}'|sed 's/://g'` ## getting the time each line##
timediffstg=$((10#$timeHH$timeMM - 10#$timeminstg)) ## 15:40 - 15:20 and so on
if [ "$timediffstg" -ge "$diffstg" ]
then
echo $datetoday > $email
echo ${line} >> $email
else
echo "Nothing older than 10 mins"
fi
done < /tmp/stage.txt
我得到的错误输出:if used $datetoday〉$email
Sun Apr 9 15:40:10 CEST 2023
-rw-r--r-- 1 admin admin 3046 Apr 9 15:31 /opt/4.txt
我得到的错误输出:if used $datetoday〉〉$email -以某种方式正确输出,但日期重复。
Sun Apr 9 15:40:10 CEST 2023
-rw-r--r-- 1 admin admin 3046 Apr 9 15:20 /opt/1.txt
Sun Apr 9 15:40:10 CEST 2023
-rw-r--r-- 1 admin admin 3046 Apr 9 15:20 /opt/2.txt
Sun Apr 9 15:40:10 CEST 2023
-rw-r--r-- 1 admin admin 3046 Apr 9 15:20 /opt/3.txt
预期输出:
Sun Apr 9 15:40:10 CEST 2023
-rw-r--r-- 1 admin admin 3046 Apr 9 15:20 /opt/1.txt
-rw-r--r-- 1 admin admin 3046 Apr 9 15:20 /opt/2.txt
-rw-r--r-- 1 admin admin 3046 Apr 9 15:20 /opt/3.txt
1条答案
按热度按时间nbnkbykc1#
你可以使用一些变量来知道它是否是你第一次报告文件。如果是第一次,首先回显头部(使用single〉来覆盖target)并设置,它不再是第一次了。无论如何,回显文件(使用double〉〉,所以它附加到target)。
就像这样
$email中的输出应该如下所示