Sed

用 sed ( 033[K) 添加 esc 序列

  • January 14, 2022

我想在每行的末尾添加一個轉義(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 中獲得轉義字元?

嘗試轉義字元串

sed $'s/$/\033[K/g'

告訴 shell 處理在文字單引號字元串中的$'…'轉義

更好的方法可能是僅在您寫入終端時才將清除附加到 EOL :

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

請注意,我在中途切換了引用樣式 - 這有助於將$保留作為文字,同時允許$el擴展到其值(如果有)。我們也可以使用"s/\$/$el/"

引用自:https://unix.stackexchange.com/questions/613412