Shell-Script

bash:清除兩個位置之間的字元串

  • November 24, 2016

我需要清除兩個位置之間的終端字元串(不是行首或行尾)。例如,刪除所有 fromtput cup 5 10和 until tput cup 5 69。一條線。

是的,可以簡單地echo通過整個區域的空格,但是,也許,有更好的方法嗎?類似於clear 10 69目前游標行位置的東西。

您正在尋找擦除字元控制序列。

tput cup 5 10 ; tput ech 59

這不應與刪除字元混淆。

tput cup 5 10 ; tput dch 59

擦除用空白覆蓋。刪除將向左移動該行的其餘部分。

如前所述,ech擦除字元)是可行的方法——當它起作用時。這是 VT102 附帶的,因此您將使用的大多數終端都提供該功能。

對於 ncurses 的終端描述,顏色存在問題:rxvt 的開發人員在 1995-1996 年對清除背景顏色的想法使用了不同的解釋,並且沒有(如 Linux 控制台和 xterm 那樣)將擦除與**清除相同。因此ech使用預設顏色清除,而ed( erase display ) 使用目前 ANSI 顏色清除。ech由於這個原因,ncurses 終端描述被省略了。同樣的問題適用於從該來源派生的所有程序。

進一步閱讀:

cursor_address cup cm 移動到第 1 行第 2 列

erase_chars ech ec 擦除 #1 個字元 (P)

引用自:https://unix.stackexchange.com/questions/325839