如果最后一行被更改,则每小时更新一次bash文件

时间:2012-08-30 13:03:21

标签: bash date scripting sed awk

我有一个数据文件,我每隔一小时解析一次日期和值。所以今天我的日期= 2012年8月30日,价值= 10。然后,我想仅在更改日期或值时附加具有此日期和值的新文件。所以我猜我需要检查新文件的最后一行,如果它不同,请追加。请帮我设计脚本来做到这一点。我没有cron可用,所以我将在无限循环中运行它。

谢谢

2 个答案:

答案 0 :(得分:2)

tail -1为您提供文件的最后一行。

#!/bin/bash
# infinite loop
while true
do
my_file=test.txt
# get your date and value from where ever
my_date="30 AUG 2012"
my_value=10

lastval=`tail -1 $my_file | awk -F: '{print $1}'`
if [ "$lastval" != "$my_date" ] ; then
  echo "$my_date:$my_value" >> $my_file
fi

# if the file is updated every hour, check more often than once per hour.
sleep 30m

done

答案 1 :(得分:0)

current="$(tail -n 1 $DATA_FILE)"         # Last line of data file
previous="$(tail -n 1 $OTHER_FILE)"       # Last line of log file
if [ "$current" != "$previous" ]; then    # If the last lines are different...
  echo "$current" >> $OTHER_FILE          # ... append the current data
fi