![grep - 인쇄 파일 이름을 처리할 수 없습니다.](https://linux55.com/image/127474/grep%20-%20%EC%9D%B8%EC%87%84%20%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%EC%B2%98%EB%A6%AC%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
이런 로그가 있습니다. .bill.file 형식의 파일 수를 처리합니다. 처리 중 문제가 발생한 경우심각한메시지 다음에정보파일 경로에 대한 세부 정보가 포함된 인쇄됩니다.
SEVERE 2016-02-09 00:45:18 [process number] rocessRunner.process Exception during process 123.bill.file
SEVERE 2016-02-09 00:45:18 [process number]
...
...
INFO 2016-02-09 00:45:18 [process number] Runner. Closing input /var/run/data/123.bill.file
내 요구 사항은 예외가 발생하는 파일 경로를 얻는 것입니다.
답변1
grep
귀하의 요구 사항과 같은 조건 기반 일치에는 실제로 적합하지 않지만 awk
여러 줄에서 여러 패턴 일치를 처리할 수 있는 데 더 적합합니다. 귀하의 입력에 따라 우리는 먼저 시작하는 문자열을 일치시키고 SEVERE
다음 일치가 INFO
발생하면 마지막 열을 인쇄합니다.가능한찾고 있는 파일이 포함되어 있습니다.
awk '/^SEVERE/{flag=1; next} flag && /^INFO/{print $NF; flag=0}' file