bash: 두 위치 사이의 문자열 지우기

bash: 두 위치 사이의 문자열 지우기

터미널의 두 위치(줄의 시작이나 끝이 아님) 사이의 문자열을 지워야 합니다. 예를 들어 tput cup 5 10에서 까지의 모든 항목을 삭제합니다 tput cup 5 69. 라인.

예, 공간의 전체 영역을 통과하는 것만으로도 가능 echo하지만 더 좋은 방법이 있을까요? clear 10 69현재 커서 줄 위치 와 유사합니다 .

답변1

당신이 찾고있는문자 삭제제어 순서.

tput cup 5 10 ; tput ech 59

이것을 혼동해서는 안 됩니다.문자 삭제.

tput cup 5 10 ; tput dch 59

지우면 공백으로 덮어쓰게 됩니다. 삭제하면 나머지 행이 왼쪽으로 이동됩니다.

답변2

앞서 언급 한 바와 같이, ech(문자 삭제)이 작동하는 한 갈 길입니다. 이 기능은 VT102와 함께 제공되므로 사용하는 대부분의 단말기에서 제공됩니다.

ncurses의 터미널 설명에 색상 문제가 있습니다. rxvt 개발자는 1995~1996년에 배경색을 지우는 아이디어에 대해 다른 해석을 사용했으며 이를 처리하지 않았습니다(Linux 콘솔 및 xterm처럼).삭제그리고변제. 따라서 ech삭제에는 기본 색상이 사용됩니다 ed.디스플레이 지우기)는 현재 ANSI 색상으로 지워집니다. ech따라서 ncurses 터미널 설명은 생략합니다. 이 소스에서 파생된 모든 프로그램에 동일한 문제가 적용됩니다.

추가 자료:

       cursor_address cup cm 1행 2열로 이동

       erar_chars ech ec #1 문자 지우기 (P)

답변3

sed를 사용하여 이 작업을 수행할 수 있습니다. 아래를 참조하세요.

에코 "문자열" | sed -e '/start/,/end/' |

관련 정보