各行の末尾にエスケープ文字(ttyコントロール)を追加したいと思います。
sed '/s/$/foo/g'
foo
行の末尾に追加します。esc[K
行末に追加したい(行末まで消去)してみました
sed 's/$/\033[K/g'
sed 's/$/\\033[K/g'
sed 's/$/\e[K/g'
sed 's/$/\\e[K/g'
どちらもエスケープ文字を生成せず、入力した内容だけを印刷します。
sedでエスケープ文字を取得する方法は?
答え1
文字列をエスケープしてみてください。
sed $'s/$/\033[K/g'
$'…'
一重引用符で囲まれた文字列でエスケープ文字を処理するようにシェルに指示します。
より良いアプローチは追加することです。EOLでクリア端末に書き込む場合のみ:
test -t 1 && el=$(tput el)
…
sed 's/$/'"$el/"
途中で引用スタイルを切り替えたことに注意してください。これは、その値(存在する場合)を拡張する$
と同時にリテラルとして保持するのに役立ちます。$el
私達はまた利用できます"s/\$/$el/"