sedを使用してescシーケンス(\ 033 [K)を追加します。

sedを使用してescシーケンス(\ 033 [K)を追加します。

各行の末尾にエスケープ文字(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/"

関連情報