sed は word1 と word2 を一致させ、その間にある単語を取得します。

sed は word1 と word2 を一致させ、その間にある単語を取得します。

ログファイル呼び出しのIPアドレス全体を抽出するのに問題があります。

ファイルの行は次のとおりです。

[2016-11-10 11:22:42] お知らせ[24518] chan_sip.c: "62.210.189.39:6584"に対する"100"登録失敗 - 間違ったパスワード

'間のIPアドレスのみが必要です。:

以下は、IPを抽出しようとしたものです。

sed -e "/failed[[:space:]]for[[:space:]]'*.*.*.*:*'/,/[[:space:]]-[[:space:]]Wrong[[:space:]]Password/p" full > output.txt

ベストアンサー1

非常に基本的な解決策は次のようになります。cut

cut -d \' -f 4 < full | cut -d : -f 1 > output.txt
62.210.189.39

この内容をいくつかの行でフィルタリングしたいかもしれないので、Wrong Passwordここでもいくつかがあります。

grep 'Wrong Password' full | cut -d \' -f 4 |cut -d : -f 1 > output.txt

これは少し複雑なバージョンです。sed

sed -e "s/.*failed for '\([0-9\.]*\):.*/\1/" full > output.txt

グループ化を使用した括弧内のIPアドレスの抽出

ただ楽しんで一つ作ってみましたperl

perl -n -e "/failed for '([\d.]+):/ && print \$1 . \"\n\"" full > output.txt

これもgrep私に役立つ質問の説明のコマンドです。

grep -oP '(\d{1,3}\.{1})+\d{1,3}' full > output.txt

おすすめ記事