時刻/日付と値を含むログのフィールドの印刷

時刻/日付と値を含むログのフィールドの印刷

grepとawkのみを使用して、ログファイルからMMM DD HH:MM:SSとは異なるフィールド(SRCなど)を印刷できますか?したがって、大容量ログファイルは日付、時刻、およびSRCのみを抽出します。

ログの情報の例:

Oct 19 21:13:00 server kernel: [ 6457.382677] PING:IN=eth0 OUT= MAC=00:00:00:00:00:05:00:00:00:00:00:00:00:00 SRC=192.168.0.101 DST=192.168.0.102 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=52472 DF PROTO=ICMP TYPE=8 CODE=0 ID=2438 SEQ=3
Oct 19 21:13:01 server kernel: [ 6458.385884] PING:IN=eth0 OUT= MAC=00:00:00:00:00:05:00:00:00:00:00:00:00:00 SRC=192.168.0.101 DST=192.168.0.102 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=52719 DF PROTO=ICMP TYPE=8 CODE=0 ID=2438 SEQ=4

予想出力:

Oct 19 21:13:00 SRC=192.168.0.101

答え1

awkデフォルトでは、スペースはフィールド区切り文字として使用されるため、正しい列のみを印刷してください。

 $ cat file.txt
 
 Oct 19 21:13:00 server kernel: [ 6457.382677] PING:IN=eth0 OUT=
 MAC=00:00:00:00:00:05:00:00:00:00:00:00:00:00 SRC=192.168.0.101
 DST=192.168.0.102 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=52472 DF
 PROTO=ICMP TYPE=8 CODE=0 ID=2438 SEQ=3
$ awk '{ print $1, $2, $3, $11 }' file.txt

出力:

Oct 19 21:13:00 SRC=192.168.0.101

関連情報