【发布时间】:2014-03-20 05:29:16
【问题描述】:
我之前问过一个问题。 Link 这个问题。
我现在面临的问题是搜索到的字符串可能存在于多个成功/失败文件中,并且脚本会显示先前生成的文件的结果。我的任务是仅从目录中选择最新的文件(成功和失败)并显示结果。 上一个已解决问题的代码:
#!/usr/bin/ksh
file_name="140127_123933.csv"
for i in 1 2
do
grep -l $file_name /osp/local/var/log/tool2/final_logs/* >log_t.txt;
while read line
do
if [ $(echo "$line" |awk '/success/') ] ## will check the success file
then
CNT_SUCC=`wc -l $line|tr -s " "|cut -d" " -f2`
CNT_SUCC=`expr $CNT_SUCC - 1`
fi
if [ $(echo "$line" |awk '/fail/') ] ## will check the fail file
then
CNT_FAIL=`wc -l $line|tr -s " "|cut -d" " -f2`
CNT_FAIL=`expr $CNT_FAIL - 1`
fi
done <log_t.txt
if [ $CNT_SUCC > 0 ] && [ $CNT_FAIL > 0 ]
then
echo " Fail count = $CNT_FAIL"
echo " Success count = $CNT_SUCC"
exit
fi
echo "waitng for next search..."
sleep 10
done
final_logs 目录包含结果文件,由另一个任务 P1 通过处理此 140127_123933.csv 类型的文件生成。 实际上,P1 处理文件 140127_123933.csv 并将结果转储到 final_logs 目录中的两个不同文件(成功和失败)中。进程 P1 将这两个文件中的 140127_123933.csv 名称作为第一行转储。 只要提供给任务 P1 处理的 140127_123933.csv 文件是唯一的,我的代码就可以正常工作。但是,当同一文件 140127_123933.csv 在一段时间后再次由任务 P1 处理时,就会出现问题。现在共有 4 个文件(2 个成功和 2 个失败)包含此特定字符串。我的代码将显示先前创建的成功和失败文件的结果,而不是最近创建的文件的结果。 非常感谢您的快速响应。如果您需要任何其他信息,请随时联系。
提前致谢。
【问题讨论】:
标签: file unix scripting grep ksh