프로그램은 데이터의 개별 행을 시간순으로 동일한 행에 출력하고, 기록될 때마다 행을 덮어씁니다. 모든 출력 라인을 캡처하여 줄 바꿈으로 구분된 파일에 쓰려면 어떻게 해야 합니까? 일반 리디렉션에서는 이 작업을 수행하지 않습니다.
답변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
사용자(또는 합리적인 편집자)에게 도움이 될 것입니다.