端末の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 端末の説明は省略します。このソースから派生したすべてのプログラムに同じ問題が適用されます。
追加資料:
- 私の端末に着色されていないスペースが表示されます。
- terminfo - 端末機能データベース、あなた
tput
はcup
そしてech
能力:
cursor_address cup cm 1行2列に移動 erar_chars ech ec #1 文字消去 (P)
答え3
sedを使用してこれを実行できます。下記をご覧ください。
エコ「文字列」| sed -e '/start/,/end/' |