![프로그램 출력의 변경 라인을 캡처하는 방법은 무엇입니까?](https://linux55.com/image/131264/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%20%EC%B6%9C%EB%A0%A5%EC%9D%98%20%EB%B3%80%EA%B2%BD%20%EB%9D%BC%EC%9D%B8%EC%9D%84%20%EC%BA%A1%EC%B2%98%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
프로그램은 데이터의 개별 행을 시간순으로 동일한 행에 출력하고, 기록될 때마다 행을 덮어씁니다. 모든 출력 라인을 캡처하여 줄 바꿈으로 구분된 파일에 쓰려면 어떻게 해야 합니까? 일반 리디렉션에서는 이 작업을 수행하지 않습니다.
답변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
사용자(또는 합리적인 편집자)에게 도움이 될 것입니다.