stderr의 특정 부분만 기록하시겠습니까?

stderr의 특정 부분만 기록하시겠습니까?

관련 정보를 찾을 수 없는데, stderr의 특정 부분만 파일에 기록하려고 합니다. 예를 들어

실행 tar -xzf file 2>> log.txt하고 오류 발생

tar: Child returned status 1

명령 이름 없이 Child가 반환한 상태 1 부분만 기록하고 싶습니다.

답변1

tar -xzf file 3>&1 1>&2 2>&3 | grep -oP '^app: \K.*$' | tee logfile

답변2

를 사용하면 zsh다음을 수행할 수 있습니다.

tar -xzf file 2> >(sed 's/^tar: //' >> file.log)

이렇게 하면 tar종료 상태가 보존됩니다.

당신 은 이런 일을 할 수 있습니다 ksh.bashyashsed이 명령을 사용하는 경우file.log.

다른 옵션은 bash다음을 사용하는 것입니다:

{ tar -xzf file 2>&1 >&3 3>&- | sed 's/^tar: //' >> file.log 3>&-; } 3>&1
tar_exit_status=${PIPESTATUS[0]}

tar여러 쉘의 경우 빈 argv[0]을 사용하여 호출 할 수도 있습니다 .

(exec -a '' tar -xzf file)

이 경우 오류 메시지는 다음과 같습니다.

: Child returned status 1

관련 정보