파일에 저장된 프로그램 출력에서 ​​진행률 표시줄 등을 표시하는 데 사용되는 특수 문자를 자동으로 렌더링합니다.

파일에 저장된 프로그램 출력에서 ​​진행률 표시줄 등을 표시하는 데 사용되는 특수 문자를 자동으로 렌더링합니다.

쉘에서 프로그램을 실행하고 출력을 파일로 리디렉션했습니다.

해당 프로그램은 수많은 이동 진행률 표시줄 등을 표시합니다. 따라서 출력 파일에는 \r이러한 열을 덮어쓰는 행과 같은 특수 문자가 포함됩니다. 파일을 입력 하면 cat진행률 표시줄이 다시 렌더링되는데, 이는 SSH를 통해 많은 시간이 걸릴 수 있습니다.

진행률 표시줄의 최종 상태만 저장하는 텍스트 파일을 만드는 방법은 무엇입니까?

답변1

예를 들어 다음과 같이 출력을 필터링할 수 있습니다 col -b.

col -b < rawoutput.txt > simplifiedversion.txt

man col:

col —
입력에서 역방향 개행을 필터링합니다.

[...]

-비백스페이스 키가 출력되지 않습니다.각 열 위치에 쓰여진 마지막 문자만 인쇄.

예를 들어 원본 파일에 ANSI 이스케이프 코드가 사용되면 결과가 손상될 수 있습니다.

답변2

문자가 \r고유하고 라인이 다음과 같이 구성되어 있다고 가정합니다.

X\rXX\rXXX\rXXXX\rXXXXX

sed를 사용하여 마지막 항목 이전의 모든 항목을 삭제할 수 있습니다.\r

$ echo $'X\rXX\rXXX\rXXXX\rXXXXX' >myfile
$ sed 's/^.*\r//' myfile
XXXXX
$

관련 정보