bash:2つの位置の間の文字列を消去する

bash:2つの位置の間の文字列を消去する

端末の2つの位置(行の先頭または末尾ではない)の間の文字列を消去する必要があります。たとえば、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/' |

関連情報