sed 정규식을 사용하여 정보 추출

sed 정규식을 사용하여 정보 추출

분석에 추가로 사용할 수 있도록 sed 정규식을 사용하여 로그 파일에서 일부 정보를 추출하고 있습니다. 다음 명령을 만들었지만 작동하지 않습니다.

sed -e 's/\([0-9] [0-9]*.[0-9]*.[0-9]*\)[^@]* ([^@]*@[^[:spa ce:]]*).*F=<\([^ ]*\)>.*I=[\([0-9]\+\.[0-9]\+\.)].*$/\1\t\2/' logs

통나무:

2017-02-13 10:31:55 1cd9Ev-003XiE-Sx ** [email protected] F=<[email protected]> R=dkim_lookuphost T=dkim_remote_smtp H=ah2.inboundmx.com [216.82.242.115] I=[147.75.228.64] X=TLSv1.2:DHE-RSA-AES256-GCM-SHA384:256 CV=yes DN="/C=US/ST=California/L=Mountain View/O=Symantec Corporation/OU=Symantec.cloud CN=mail132.messagelabs.com": SMTP error from remote mail server after end of data: 553-Message filtered. Refer to the Troubleshooting page at\n553-http://www.symanteccloud.com/troubleshooting for more\n553 information. (#5.7.1)

2017-02-14 10:01:40 1cd9Ev-003XiE-Sx ** [email protected] F=<[email protected]> R=dkim_lookuphost T=dkim_remote_smtp H=ah2.inboundmx.com [216.82.242.115] I=[14.176.22.221] X=TLSv1.2:DHE-RSA-AES256-GCM-SHA384:256 CV=yes DN="/C=US/ST=California/L=Mountain View/O=Symantec Corporation/OU=Symantec.cloud CN=mail132.messagelabs.com": 501 Connection rejected by policy. Refer to the Troubleshooting page at\n501-http://www.symanteccloud.com/troubleshooting for more\n501 information. (#5.7.1)

위 로그에서 다음 필드를 추출하고 싶습니다.

Timestamp            EmailTo:           EmailFrom:      IPAddress:      ErrorCodes:
2017-02-13 10:31:55 [email protected]  [email protected]  147.75.228.64   553
2017-02-14 10:01:40 [email protected] [email protected]  14.176.22.221   501

답변1

필수 필드를 추출하는 것 외에 또 다른 아이디어는 추가 항목을 제거하는 것입니다.

sed '
    s/[^: ]*\s\*\*\s//
    s/F=<//
    s/>.*I=\[/ /
    s/\].*more\\n/ /
    s/\sinf.*//
    ' log.file
  • 첫 번째 명령은 삭제합니다.1cd9Ev-003XiE-Sx **
  • 두번째 -F=<
  • 세 번째 -> R=dkim_lookuphost T=dkim_remote_smtp H=ah2.inboundmx.com [216.82.242.115] I=[

등…

관련 정보