IIS 8.5의 로그 파일에 문제가 있는데 AWstats를 사용하여 문제를 처리하고 싶습니다. 내 IIS 서버가 로드 밸런서 뒤에 있으므로 사용자 지정 로깅 필드 X-FORWARDED-FOR를 추가해야 합니다. 그러나 이로 인해 로그 파일이 약간 지저분해집니다.
2015-04-10 11:34:52 20000004f+OriginalIP+66.249.67.21+ HV-WEB-01 [etc]
2015-04-10 11:35:31 20000004f$OriginalIP+127.0.0.1,+136.243.19.46+ HV-WEB-01 [etc]
2015-04-10 11:35:31 20000004f$OriginalIP+127.0.0.1,+136.243.19.46+ HV-WEB-01 [etc]
2015-04-10 21:05:38 20000004f%OriginalIP+10.10.1.7,+89.221.243.229+ HV-WEB-01 [etc]
2015-04-10 21:05:38 20000004f%OriginalIP+10.10.1.7,+89.221.243.229+ HV-WEB-01 [etc]
2015-04-10 21:06:49 20000004f+OriginalIP+2.150.2.19+ HV-WEB-01 [etc]
지금은 로드 밸런서 남자/여자를 찾을 수 없으므로 이제 "10.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.0에 대한 "20000000f+OriginalIP+10.20.30.40+" 항목을 모두 포함하는 검색/바꾸기를 수행하여 신속하고 더러운 문제를 해결하고 싶습니다. 30.40".
업데이트: 처음에 생각했던 것보다 더 많은 변경 사항이 있는 것 같습니다...
답변1
이것은 후행을 제외한 모든 것을 처리합니다 +
.
sed 's/ [^+ ]*+*\([0-9.]*\)[,+]*/ \1 /2' <<\IN
2015-04-10 11:35:31 20000004f$OriginalIP+127.0.0.1,+136.243.19.46+ HV-WEB-01 [etc]
2015-04-10 11:35:31 20000004f$OriginalIP+127.0.0.1,+136.243.19.46+ HV-WEB-01 [etc]
2015-04-10 21:05:38 20000004f%OriginalIP+10.10.1.7,+89.221.243.229+ HV-WEB-01 [etc]
2015-04-10 21:05:38 20000004f%OriginalIP+10.10.1.7,+89.221.243.229+ HV-WEB-01 [etc]
IN
인쇄된다...
2015-04-10 11:35:31 127.0.0.1 136.243.19.46+ HV-WEB-01 [etc]
2015-04-10 11:35:31 127.0.0.1 136.243.19.46+ HV-WEB-01 [etc]
2015-04-10 21:05:38 10.10.1.7 89.221.243.229+ HV-WEB-01 [etc]
2015-04-10 21:05:38 10.10.1.7 89.221.243.229+ HV-WEB-01 [etc]
이는 구분 기호로 사용하려는 문자에 필드가 함께 연결되어 있기 때문입니다. 솔직히 말해서 조금 실망스럽습니다. 하지만 고치는 것은 쉽습니다:
sed 's/ [^+ ]*+*\([0-9.]*\)[,+]*/ \1 /2;s/+ / /' <infile
답변2
sed 's/20000000f+OriginalIP+\([0-9.]*\)+/\1/' <yourlog >newlog
이것이 yourlog
수정하려는 로그라고 가정합니다. 수정된 로그는 에 저장됩니다 newlog
.