ESC[xC
ANSI 모션 코드 가 포함된 파일이 있는데 ESC[xD
이를 필터링하고 싶지만 출력의 각 줄에서 이러한 코드를 고려하도록 합니다.
다음 줄을 고려하십시오.
this cat is greenESC[12DdogESC[4Cwhite
나는 그것을 다음과 같이 출력하고 싶다.
this dog is white
위는 ESC
이스케이프 코드 \0x1b
(또는 \033
)를 나타냅니다.
답변1
나는 더 나은 방법이 있다고 확신하지만(그리고 더 나은 Perl이 있을 것이라고 확신합니다), 이것이 효과가 있는 것 같습니다:
perl -M5';$e="\x1b";' -lne 'chomp;if(/$e\[\d+[CD]/){$ns="";$p=0;while(/$e\[(\d+)([CD])/g){if(!$ns){$ns=$`;$p=length($ns)}$p+=($2eq"C"?+$1:-$1);($a=$'"'"')=~s/(^[^$e]+).*/$1/;if($a=~/^[^$e]/){substr($ns,$p,length($a),$a);$p+=length($a)}}print $ns}else{print $_}'