仕事で取り組んでいるプロジェクトがあります。作成中のスクリプトは、最初に 2 つの引数を取ります。1 つは一意の識別子、もう 1 つはログ ファイル用です (両方とも文字列)。これで、一意の識別子を解析する最初の部分は完了しました。しかし、2 番目の部分は、ランダムに生成された数字と文字の文字列である特定の文字列を解析することです。
私はawk
ステートメントを使用してこのランダムな文字列を取得しており、Rubular で表現が正しいことを確認しました。しかし、more を使用してコードをテストしようとすると、何も出力されません。コマンド ラインに入力した内容は次のとおりです。
awk '/\s=\s[a-zA-Z0-9-]+/ {print }' ~/jlog/server.log | more
私のスクリプトの内容は次のとおりです。
for j in $(cat ~/jlog/"$2"); do awk '/'"$1"'/\s=\s[a-zA-Z0-9-]+/ {print}'
以下は私が解析しているログの一部です:
2014-06-17 15:34:52,406 INFO [random.random.xxx.message.Random] Processed instance (1.2.840.113619.2.284.3.2013961368.890.1402186239.15
5/1.2.840.113619.2.80.1944071037.22604.1402323463.136) from [email protected] to Random_AE. AssociationID = 9eddb1b0-368e-4fb9-a684-44cc14be389c
特に、関連付け ID の後のランダム コードを探しています。結果を表示する方法について何か提案はありますか? アイデアが尽きてしまいました。
答え1
してみてください
awk '$3=="INFO" && $(NF-2)=="AssociationID" && $(NF-1)=="=" { print $NF }' ~/jlog/server.log
ログファイル名を直接渡すことで、 および の使用もawk
回避できます。for
cat