내 문제는 다음과 비슷합니다이것cut
; 시뮬레이트 nowrap
하는 데 사용하고 싶지만 tmux
출력이 색상으로 표시됩니다. 유지하려는 열 수(50개)는 알고 있지만 출력에 원하는 색상 레이블 수는 모릅니다. 잘라내기는 cut -c-50
각 줄에 있는 이스케이프 문자(색상 레이블) 수에 따라 다양한 출력을 생성합니다.
요약하자면, 색상을 무시하고 고정된 너비로 텍스트를 잘라서 항상 50개의 색상 문자를 얻을 수 있습니까?
답변1
노력하다:
perl -pe 's/^((?:(?>(?:\e\[.*?m)*).){50}).*/$1\e[m/'
이는 ansi 유형 이스케이프 시퀀스로 간주됩니다.
\e[31m
색상 설정 및 \e[m
/또는 \e[0m
재설정 과 같은 이스케이프 시퀀스가 함께 제공됩니다 . 위에서는 \e[m
각 줄의 끝에 추가하지만 입력에 따라 이것이 항상 이상적인 것은 아닙니다.