問題:特定のパラメータについて、ノードの事前チェックステータスと事後チェックステータスのファイルを比較します。
コミュニティの助けを借りて、「Node-ID」(たまたま一意であり、ファイルからも抽出される)に基づいて、前後のディレクトリからファイルから情報を抽出する次のソリューションを作成しました。Pre / postフォルダーからデータを抽出した後、node-idに基づいてフォルダーを作成し、ファイルをフォルダーにダンプしました。
データを抽出するためのマイコード(データはPreフォルダーとPostフォルダーから抽出されます)
FILES=$(find postcheck_logs -type f -name *.log)
for f in $FILES
do
NODE=`cat $f | grep -m 1 ">" | awk '{print $1}' | sed 's/[>]//g'` ##Generate the node-id
echo "Extracting Post check information for " $NODE
mkdir temp/$NODE-post ## create a temp directory
cat $f | awk 'BEGIN { RS=$NODE"> "; } /^param1/ { foo=RS $0; } END { print foo ; }' > temp/$NODE-post/param1.txt ## extract data
cat $f | awk 'BEGIN { RS=$NODE"> "; } /^param2/ { foo=RS $0; } END { print foo ; }' > temp/$NODE-post/param2.txt
cat $f | awk 'BEGIN { RS=$NODE"> "; } /^param3/ { foo=RS $0; } END { print foo ; }' > temp/$NODE-post/param3.txt
done
この後、私は次のような構造になります。
/Node1-pre/param1.txt
/Node1-post/param1.txt
等々。
今、私は比較$NODE-pre
と$NODE-post
ファイルに固執しています、
再帰的なgrepを使用してそれを実行しようとしましたが、適切な方法が見つかりません。diffを使用してこれらのファイルを比較するための最良の方法は何ですか?
さらに、上記のデータ抽出プログラムは非常に遅いと思います。私はそれがそうするための最良の方法(最小限のリソースを使用する)ではないと信じています。助言がありますか?