프로그램 출력의 변경 라인을 캡처하는 방법은 무엇입니까?

프로그램 출력의 변경 라인을 캡처하는 방법은 무엇입니까?

프로그램은 데이터의 개별 행을 시간순으로 동일한 행에 출력하고, 기록될 때마다 행을 덮어씁니다. 모든 출력 라인을 캡처하여 줄 바꿈으로 구분된 파일에 쓰려면 어떻게 해야 합니까? 일반 리디렉션에서는 이 작업을 수행하지 않습니다.

답변1

\r이것이 결과를 사용하여 수행된다고 가정 \r합니다\n .

yourprogram | tr '\r' '\n' > logfile

차이점 보기

printf "Hello\rworld\n"

그리고

printf "Hello\rworld\n" | tr '\r' '\n'

이것이 없으면 로그 파일로 리디렉션됩니다.~ 할 것이다모든 출력을 파일에 저장합니다. less파일을 보는 대신 를 사용하여 볼 수 있습니다 cat. ( 이전 줄을 덮어쓰지 않고 로 less표시됩니다 .)\r^M

프로그램이 터미널에 직접 쓰는 경우에는 도움이 되지 않습니다. 이 경우 모든 터미널 출력을 캡처하는 프로그램을 사용할 수도 있습니다. 예는 다음과 같습니다 script.

script -c yourprogram logfile

프로그램을 시작하고 모든 출력을 캡처합니다 logfile. 이를 이해하려면 로그 파일의 특수 문자를 처리해야 합니다. 이는 less사용자(또는 합리적인 편집자)에게 도움이 될 것입니다.

관련 정보