我想在每行末尾添加一个转义符(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/"