로그 파일에서 데이터 추출

로그 파일에서 데이터 추출

Linux 명령과 도구를 사용하여 파일을 구문 분석하는 방법을 배우려고 합니다. 나는 grep/awk/sed를 가장 잘 활용하는 방법에 대해 항상 혼란스러워합니다.

이는 특정 사용 사례입니다.

다음 문자열이 포함된 로그 파일이 있습니다.

Config Server received a Connection Establishment with an invalid public key, closing connection. Agent Identifier: SRV3 Socket IP: 192.168.2.6
Config Server received a Connection Establishment with an invalid public key, closing connection. Agent Identifier: TESTSRV4 Socket IP: 10.1.2.3
Config Server received a Connection Establishment with an invalid public key, closing connection. Agent Identifier: SRV1 Socket IP: 192.168.2.15
Config Server received a Connection Establishment with an invalid public key, closing connection. Agent Identifier: TESTSRV2 Socket IP: 10.1.2.4

내 목표는 "에이전트 식별자" 뒤에 나타나는 호스트 이름과 각 줄의 관련 IP 주소를 추출하여 txt 파일로 내보내는 것입니다. 가장 좋은 해결책은 무엇입니까?

답변1

이렇게 하세요:

$ cat file.log | awk '{ print $16, $19 }' 

다음과 같은 목록이 반환됩니다.

SRV3 192.168.2.6
TESTSRV4 10.1.2.3
SRV1 192.168.2.15
TESTSRV2 10.1.2.4

원하는 위치로 출력을 리디렉션할 수 있습니다. 예를 들어 다음을 추가하면 됩니다.

> hosts.text

이름이 지정된 파일로 데이터를 출력합니다.호스트.txt

위의 내용은 모든 내용을 중단 (교체)합니다.호스트.txt문서. 파일 끝에 데이터 를 추가하려면 >>.>

답변2

sed방법:

sed -n 's/.* Agent Identifier: \(.*\) Socket IP: \(.*\)/\1 \2/p' inputfile > host_list.txt

호스트 목록.txt문서 내용( cat host_list.txt):

SRV3 192.168.2.6
TESTSRV4 10.1.2.3
SRV1 192.168.2.15
TESTSRV2 10.1.2.4

관련 정보