【问题标题】:ksh: shell script to search for a string in all files present in a directory at a regular interval and avoid the repetitionksh:shell脚本,用于定期在目录中存在的所有文件中搜索字符串并避免重复
【发布时间】: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


    【解决方案1】:

    我不明白你为什么要循环两次。您可以减少该代码(忽略外部循环)

    #!/usr/bin/ksh
    
    search_name="140127_123933.csv"
    cnt_success=0
    cnt_fail=0
    
    for file in /osp/local/var/log/tool2/final_logs/*; do
        if [[ "$(head -1 "$file")" == "$search_name" ]]; 
            case "$file" in
                *success*) (( cnt_success++ )) ;;
                *fail*)    (( cnt_fail++ )) ;;
            esac
        fi
    done
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-05
      • 1970-01-01
      • 1970-01-01
      • 2020-01-03
      • 2018-01-29
      • 1970-01-01
      • 2017-03-03
      • 1970-01-01
      相关资源
      最近更新 更多