2016-09-28 2 views
0

ログのファイルはすべて、タイムスタンプで始まり、その後にログレベルとメッセージが続き、タイムスタンプを取り除くスクリプトが必要です。すべての行で最初の空白の前にすべてを削除する

21:22:34.571 DEBUG - some message 

DEBUG - some message 

に私はずっとそう何かアドバイスをいただければ幸いbashのを使用していない:ある

は、私は、ファイルのすべての行が有効になり用のスクリプトをしたいです。

+1

日数を行うと、 '-f2- file.log' '' – anubhava

+1

を-dカット先頭の空白のままにしますログファイルには表示されません。また、真夜中以降に投稿された最初のメッセージの前、または毎時、または...?日付行にタイムスタンプが前に付いていない(そして、おそらくそうではないはずです)場合は、それらをそのままにしておく必要があるからです。 'cut 'や' sed' s/^ [^] * // ''のようなものを使う仕組みはあまり適切ではありません。あなたがマッチングしているものをもっと厳しくする必要があります。私は、日付を残すことはおそらく良いアイデアではないことを観察しますが、それは私の問題ではなく、あなたの問題です。 –

+0

私は2つのログのセットを比較しようとしていますが、それらの間に何が違うのかを把握しようとしています。タイムスタンプのためにすべてのラインが違うと言います。 – annedroiid

答えて

1

awkを使用することができた場合:エルス

awk '$1="";1' data_file_name 

を、シェル(非常に非常に遅い)を使用します。

#!/bin/bash 
while read -r line; do 
    printf '%s\n' "${line#* }" 
done <"data_file_name" 
+0

'awk'スクリプトは出力行に先行する空白を残すことに注意してください。その点でシェルコードはきれいです。 –

+0

@JonathanLeffler悪いことに、 'awk'コードは' $ 1'に代入することによって、それらの間に 'OFS'を挟んですべてのパラメータから再構築されます。これは、フィールド間のホワイトスペースの分離を閉鎖します。 – Kaz

+0

@ Kazそして、[この答えは236の票で、まったく同じです](http://stackoverflow.com/a/2961994/6843677)です。あなたが実際に(スペース(これはおそらくオプション4)を使用してください)](http:// stackoverflow。com/a/32774373/6843677)、これは単純な必要性のためにあまりにも多くのようです。 – sorontar

2

あなたは、入力データに応じて、sedまたはcutのいずれかを試すことができます。

sed -e 's/^[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}.[0-9]\{3\}//' <data_file_name> 


cut -c 13- <data_file_name> 
+0

コメント(もっと深刻なものではなく、面白​​いこと):シェルスクリプトで ''を使うのは良い考えではありません。 'data_file_name'や' log.file'などの単純な名前を使用してください。「データが 'log.file'」などと似ているとコメントしてください。 '' $ @ ''を使っても良いでしょう。 'スクリプトにすべてのファイル名の引数を処理するか、または存在しない場合は標準入力を処理する'ことを示します。 –

+1

また、 'sed 's/^ [^] * //''を使う方が簡単かもしれません - 最初の空白までの非空白をすべて削除してください。あなたのスクリプトは実際には空白も削除しません。 –

+0

@JonathanLefflerあなたはどちらの場合もそうです。質問はアイデアに関するものでした。私は2つのアイデアを出した。その他の情報はありません – GMichael

0

grepも同様に、スペース

$ cat ip.txt 
21:22:34.571 DEBUG - some message 
21:23:34.571 DEBUG - some other message 

後INGのこれは

$ grep -o ' .*' ip.txt 
DEBUG - some message 
DEBUG - some other message 

これますない

$ grep -oP ' \K.*' ip.txt 
DEBUG - some message 
DEBUG - some other message 
関連する問題