最初の列と特定のパターンに続くテキストを取得するログファイルを解析しようとしています。
ログファイルは次のとおりです。
2018-04-25 00:00:10,139 INFO [HiveServer2-HttpHandler-Pool: Thread-2678420]: parse.ParseDriver (ParseDriver.java:parse(185)) - Parsing command: show databases
タイムスタンプ(最初と2番目の列)とキーワードを含むすべてのコマンドの最終出力が必要ですcommand:
。
これを得るためのきれいな方法はありますか?現在私の計画はawk
。sed
コマンドをインポートしてから、2つの出力を新しいファイルにマージするために使用されます。
答え1
以下を使用してこれを実行することもできますcut
。
cut -d' ' -f1,2,12- ${YOUR_LOG_FILE}
または(より安全な):
cat ${YOUR_LOG_FILE} | tr -s " " | cut -d' ' -f1,2,11-
答え2
これはしなければならない
awk -F'(,|command:)' '{print $1, $NF}' infile
2018-04-25 00:00:10 show databases
ここでは、フィールド区切り文字であるカンマまたは文字列を,
定義し、最初のフィールドcommand:
と最後のフィールドを印刷します。