2017-01-04 7 views
1

2つのファイルをすばやく解析しようとしていますが、ログファイルから取得しようとしているものを組み合わせることができないようです。私は日付とIPアドレスをログファイルから取り出して、新しいログファイルに書き込もうとしています。ログファイルに似ている:角かっことipsの間で解析が失敗する

some info[28/Dec/2016:04:05:58 -0700] 192.168.58.98 Some Other random information 
--information--[28/Dec/2016:04:05:58 -0700] 192.168.56.10 Some Other random information 
192.168.58.1 [28/Dec/2016:04:05:58 -0700]information 192.168.58.0 Some Other random 
sometext:192.168.58.2 [28/Dec/2016:04:05:58 -0700] information 

ファイル内のすべての行は、最初の最初のIPアドレスまたは日付が含まれているわけではありません...日付が括弧で間違いなくですが。

私がこれまで試してみましたコードはされています:これは私が新しいログファイルにそれらを同時に両方を引くと書くことができるようにする必要がありますが、完全に罰金日付またはIPを引っ張る

cat log_file | awk -vRS="]" -vFS="[" '{print $2]' >> New_Log_File 
grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" log_file >> New_Log_File 

。どんな支援も大歓迎です。ここで

答えて

1

grep -oは、あなたの出力を解析するためにawkと結合されています

grep -iEo '([0-9]+\.){3}[0-9]+|[0-9]{2}/[a-z]{3}/[0-9]{4}(:[0-9]{2}){3} -[0-9]+|$' file | 
awk -F '\n' -v RS= '{ 
for (i=1; i<=NF; i++) 
    if ($i ~ /-[0-9]{4}/) dt=$i; else ips = (ips != "" ? ips OFS $i : $i); 
    print dt " :: " ips; dt=ips="" 
}' 

28/Dec/2016:04:05:58 -0700 :: 192.168.58.98 
28/Dec/2016:04:05:58 -0700 :: 192.168.56.10 
28/Dec/2016:04:05:58 -0700 :: 192.168.58.1 192.168.58.0 
28/Dec/2016:04:05:58 -0700 :: 192.168.58.2 
  1. まずgrepに解析を通過するために使用されるすべての日時スタンプORその後
  2. awk IPアドレスをつかむために使用されています日付とIPアドレスを分離して出力します。
+0

私のサーバーに戻ったらすぐにお知らせします。ありがとうございました! – bluerojo

関連する問題