0

私はBashでスクリプトを学び始めたばかりの新しいインターンです。次の形式のレコードを含むいくつかのセキュリティ ログ ファイルに取り組んでいます。

Apr  9 14:11:44 10.10.12.10 NeXpose: VULNERABILITY: TCP timestamp response (generic-tcp-timestamp)

2 つの部分文字列、つまりターゲット IP アドレスと脆弱性の説明を抽出し、 awkを使用してファイルに書き込もうとしています。いずれかを 1 回の実行で抽出できます。そのような

awk '{print $4}' >> output

IPアドレスを与える

awk 'BEGIN { FS = " VULNERABILITY: ";  OFS = "|"} /VULNERABILITY/ { print '"$MY_VAR"' $2}'>> output 

文字列の最後の部分を与える

出力を容易にするために、両方を 1 つの文で抽出できる方法はありますか?

どうもありがとう!

4

3 に答える 3

0

1 つの方法は、 character で分割すること:です。最後のフィールドは簡単で、IP の場合はスペースで再度分割し、次のように 2 番目のフィールドを取得します。

awk -F: '{ 
    split( $3, f3, /[[:space:]]+/ ) 
    printf( "%s %s\n", f3[2], $NF ) 
}' infile

次の結果が得られます。

10.10.12.10  TCP timestamp response (generic-tcp-timestamp)
于 2013-05-28T07:35:15.773 に答える