使用 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'

告诉$'…'shell 处理单引号字符串中的转义字符

更好的方法可能是附加清除至 EOL仅当您写入终端时:

test -t 1 && el=$(tput el)
sed 's/$/'"$el/"

请注意,我在中途切换了引用样式 - 这有助于保留$为文字,同时允许$el扩展到其值(如果有)。我们也可以使用"s/\$/$el/"

相关内容