awk はログファイルのリストをフィルタリングします。

awk はログファイルのリストをフィルタリングします。

次のコマンドを使用して現在の日付の期間を抽出し、次の特定のメッセージに対してgrepを試みました。

awk -v date="$(date +%Y%m%d')" '$1="date" && $3>"180000" && $3<"192000"' /app/exploit/log/FILE_send.log | grep "End success file transfer /app/reception/FILENAME.dat to HOSTX"

ただし、最初の日付列に基づいてフィルタリングすることはできません。以下は、awkコマンドから変数を削除して$ 1 = 20190405に日付を指定した場合のawkコマンドの出力です。

1 - 180050 | INFO | FILE_SEND.sh | | FILENAME.dat | 1800498307000 | End success file transfer /app/reception/FILENAME.dat to HOSTX

ログの内容は次のとおりです。

20190405 - 180050 | INFO   | FILE_SEND.sh    |          | FILENAME.dat                    | 1800498307000 | End success file transfer /app/reception/FILENAME.dat to HOSTX

列が1に置き換えられる理由は不明です。今日の最初の列をフィルタリングする方法

ベストアンサー1

次のコマンドを使用できます。

awk -F'[-|]'  -v date="20190405" '$1 == date && $2>180000 && $2<192000' file_name | grep "End success file transfer /app/reception/FILENAME.dat to HOSTX"

コマンドの出力はawk次のとおりです。

 20190405 - 180050 | INFO   | FILE_SEND.sh    |          | FILENAME.dat                    | 1800498307000 | End success file transfer /app/reception/FILENAME.dat to HOSTX

可変日付の使用:

awk -F'[-|]'  -v date="$(date +%Y%m%d)" '$1 == date && $2>180000 && $2<192000' filename

おすすめ記事