シェルスクリプトを使用して、複数回繰り返して URL に対して nslookup を実行しています。各 URL で IP が返された回数を確認する必要があります。
出力ファイルでは、出力は次のように保存されます
URL
IP address
uniq -c コマンドを使用すると、同じ IP アドレスが隣接している場合はカウントされますが、同じ IP アドレスが隣接していない行にある場合はカウントされません
Command is
cat file.log | awk '{print $1}' | uniq -c
ここにサンプル出力があります
1 url
3 72.51.46.230
特定の URL に対して複数の IP アドレスが返され、それらが隣接していない行にある場合は、no. 反復の。その場合、uniq-c コマンドは機能しません。ソートオプションを使用するとソートされますが、URLごとに上記のように出力を表示する必要があります。カウントとその IP アドレスを含む URL と次の行。
たとえば。google.com で nslookup を実行すると、複数のアドレスが返され、uniq -c を実行すると、次の出力が得られます。ご覧のとおり、同じ IP アドレスがありますが、隣接していない行では uniq -c が機能しないため、カウントは 1 しかありません。
1 74.125.236.64
1 74.125.236.78
1 74.125.236.67
1 74.125.236.72
1 74.125.236.65
1 74.125.236.73
1 74.125.236.70
1 74.125.236.66
1 74.125.236.68
1 74.125.236.71
1 74.125.236.69
1 nslookup: can't resolv 'google.com'
1 nslookup: can't resolv 'google.com'
1 nslookup: can't resolv 'google.com'
1 nslookup: can't resolv 'google.com'
1 nslookup: can't resolv 'google.com'
1 nslookup: can't resolv 'google.com'
1 nslookup: can't resolv 'google.com'
1 74.125.236.70
1 74.125.236.66
1 74.125.236.68
1 74.125.236.71
1 74.125.236.69
AWK も試してみましたが、その場合、必要な形式で出力されません。
awk コマンド
awk '{a[$0]++}END{for (i in a) printf "%-2d -> %s \n", a[i], i}' file.log
これを達成するためのより良い解決策を提案できますか - 上記の形式でカウントと表示を取得しますか?
希望する出力形式は
URL
Count IP address
サンプル入力ファイル。
URL1
72.51.46.230
72.51.46.230
google.com
74.125.236.64
74.125.236.78
(null)
nslookup: can't resolv 'google.com'
nslookup: can't resolv 'google.com'
nslookup: can't resolv 'google.com'
nslookup: can't resolv 'google.com'
nslookup: can't resolv 'google.com'
として必要なサンプル出力
URL1
2 72.51.46.230
google.com
1 74.125.236.64
1 74.125.236.78
1 null
5 nslookup: can't resolv 'google.com'
ありがとうございました。