스크립트 출력을 필터링하고 파일로 리디렉션하는 동안 화면에 인쇄합니다.

스크립트 출력을 필터링하고 파일로 리디렉션하는 동안 화면에 인쇄합니다.

나는 일부 출력 메시지를 인쇄하고 매우 긴 명령을 호출하여 매우 긴 로그를 생성하는 간단한 쉘 스크립트를 만들었습니다. 다음 명령을 사용하여 명령에 의해 생성된 로그를 jobLog.log라는 파일로 리디렉션했습니다.이것답변. 그래서 내 코드는 다음과 같습니다

#!/bin/bash

echo "Submiting a job to ...."

sudo command_with_huge_output > jobLog.log 2>&1 && echo "Job ended! Log at jobLog.log" 

이 로그의 행을 화면으로 리디렉션하고 싶습니다. 작업이 끝나면 다음과 같이 파일을 grep합니다.

less jobLog.log | grep LineIwanttoFind 

그러면 명령이 실행될 때 인쇄하고 싶은 줄이 반환됩니다. 명령이 실행되는 동안 원하는 줄을 필터링하고 화면에서 리디렉션하려면 어떻게 해야 합니까? 물론 jobLog.log 파일의 전체 로그도 보내고 싶습니다.

어떤 제안이라도 보내주셔서 감사합니다

답변1

다음과 같이 티를 사용하세요.command_with_huge_output | tee jobLog.log | grep 'LineYouWantToFind'

따라서 command_with_huge_output의 모든 표준 출력은 jobLog.log 및 grep으로 파이프됩니다.

관련 정보