3

fold入力ファイルをラップするために使用しています。いくつかの色付きの線が短いことに気付きました。bash目に見えなくても、カラーコードを文字としてカウントすることがわかりました。例:

$ text="\e[0;31mhello\e[0m"; echo -e "$text - lenght ${#text}"
hello - lenght 18
$ text="hello"; echo -e "$text - lenght ${#text}"
hello - lenght 5

これは、他の非表示文字でも発生します。

$ text="a\bb\bc"; echo -e "$text - lenght ${#text}"
c - lenght 7

この動作を変更することは可能ですか? coreutilsプログラム (bashおよびfoldたとえば) が表示可能な文字のみをカウントできるようにしたいと考えています。

4

2 に答える 2

4

これは問題の完全な解決策ではありませんが、bash はリテラルのエスケープ シーケンスを処理しないことを知っておくことが重要です。

本当に"\b"2 文字\b. の場合のみecho -e、それらは置換されます。

例:

text="a\bb\bc"
t=$(echo -e $text)
echo ${#t}
5  # the correct length
于 2013-03-16T14:45:11.830 に答える