一連のディレクトリがあります
079/af3
100/af4
120/af3
.
.
.
各???/af?
ディレクトリには非常に長いファイルが含まれていますresults.stdout
。このファイルの終わり近くに、文字列があります
Normal termination: iterations complete!
af3(またはaf4)での計算が成功した場合、それ以外の場合は1つ以上のエラーメッセージがファイルに書き込まれます。各ファイルを手動でチェックする必要をなくすために、要約ファイルを生成するスクリプトを作成しています。
Massflow af3 af4
079 Success Failure
100 Failure Success
120 Success Success
. . .
. . .
これまでのところ、私は以下を調理することができました:
#!/bin/bash
strlen="9" # want to keep the format flexible, instead than hardcode it
format0="%"$strlen"s %"$strlen"s %"$strlen"s\n"
# write the header of file summary
awk -v format="$format0" ' BEGIN { printf format, "Massflow", "af3", "af4"
} ' >> summary
for dir in ??? # loop on all the directories
do
for j in 3 4 # loop on the two subdirs
do
result[$j]=$(tac $dir/af$j/results.stdout | awk '
/TACOMA:- Normal termination: iterations complete!/ {success = 1; exit}
END { if (success == 1)
print "Success"
else
print "Failure"
}')
done
done
exit
result
しかし、要約ファイルの書き方がわかりません...配列を別のawkプログラムに渡したいのですが、awkは配列変数を受け入れません。助言がありますか?私のプログラミングスタイル、ツールの選択、またはその両方がうまくいかないと思う場合は、アプローチやツールを自由に変更してください:)