특정 기간(예: 지난 1시간)을 되돌아보면서 로그 파일에서 일부 정보를 추출하려고 합니다. 다음 awk 구조가 작동하여 데이터를 변수로 캡처하는 것을 발견했습니다.
myvar="$(awk '$0>=from&&$0<=to' from="$(date +%b" "%d" "%H:%M:%S -d -10minute)" to="$(date +%b" "%d" "%H:%M:%S)" /var/log/messages)"
해당 변수에서 일부 정보를 얻고 이를 사용하여 경고를 생성할 수 있기를 원하지만 어떻게 해야 할지 모르겠습니다. Grep을 사용하고 있습니까? 아니면 다른 것을 사용하고 있습니까?
혹시 해결 방법을 아시는 분이나 방법을 알려주시면 정말 감사하겠습니다.
자세한 내용은 다음과 같습니다. 이는 단지 예일 뿐입니다. 지난 시간의 syslog를 검토하고 위의 awk 구조를 사용하여 모든 출력을 변수로 저장한다고 가정해 보겠습니다. 이제 경고 이메일을 보내기 위한 기초로 일부 데이터를 구문 분석하고 싶습니다. 예를 들어 "Apr 16 12:32:26 satest01 kdump: kexec: 반환된 kdump 커널"의 키워드(또는 핵심 문구) "kdump"입니다. 변수에서 이 정보를 어떻게 추출합니까?
답변1
로그 파일에서 직접 정보를 가져오지 않으려면 다음을 사용할 수 있습니다.
echo "${var}" | grep "kdump"
파이프를 사용할 수도 있습니다.
awk ...your_script | grep "kdump"
더 많은 단어를 찾고 싶다면 다음을 사용하세요.grep -E
awk ...your_script | grep -E "kdump|Diggy|other string"