콘솔 출력 대신 파일에서 문자를 제거합니다.

콘솔 출력 대신 파일에서 문자를 제거합니다.

명령 결과를 콘솔과 파일로 출력하고 싶습니다. 이를 위해 나는 tee. 사용해 보았는데 sed -e 's/\x1b\[[0-9;]*m//g'착색과 ESC가 모두 제거되었습니다.

답변1

아마도 파일을 캡처한 다음 파일을 사후 처리하여 완료되면 원하지 않는 문자를 제거할 것입니다.

이 작업을 즉시 수행해야 하고 >(...)프로세스 대체( )가 포함된 셸을 사용하는 경우 다음 중 하나를 사용하여 다음과 같이 파일 출력을 필터링할 수 있습니다 tee.

some-command | tee >( sed -e 's/\x1b[[0-9;]m//g' >file )

some-command터미널에 연결되지 않은 경우에도 컬러 텍스트가 계속 출력된다고 가정 하면 sed명령을 통해 출력을 필터링한 다음 수정된 출력을 이름이 지정된 파일로 전달합니다 file. 수정되지 않은 출력도 some-command예상대로 표준 출력으로 전달됩니다.tee

프로세스 교체 없이 sed다음과 같이 단독으로 사용할 수 있습니다.

some-command | sed -n -e p -e 's/\x1b[[0-9;]m//g' -e 'w file'

sed이는 수정되지 않은 행을 표준 출력( 사용 p)으로 출력한 다음 대체 표현식을 사용하여 수정하는 데 사용됩니다 . 마지막으로 수정된 행은 file명령으로 작성 됩니다 w. 끄기를 사용하여 스크립트 끝 부분에서 수정된 줄의 기본 출력을 편집합니다 -n.

관련 정보