如何评估特殊字符以在文本编辑器中看到它们?

如何评估特殊字符以在文本编辑器中看到它们?

假设我有一个文本“line1\n\nline2\nline3”,我想在控制台中看到它或将其通过管道传输到文本编辑器,所以它看起来像

line1

line2
line3

因此对特殊字符进行了评估。我可以在不替换正则表达式的情况下做到这一点吗?

答案1

Bash 有一个printf内置的,支持%b扩展反斜杠,并支持%q格式化字符串,以便它可以在不带引号的 shell 命令中使用(即转义 shell 倾向于用反斜杠特殊处理的所有字符)。

换句话说,在 Bash 中,您可以使用

printf '%b\n' 'line1\n\nline2\nline3'

要得到

line1

line2
line3

如果您不希望后面有换行符line3,请改用printf '%b' 'line1\n\nline2\nline3'

反函数 ( %q) 同样有用,

printf '%q' '(foo $bar baz]'

输出

\(foo\ \$bar\ baz\]

如果您有一个包含带反斜杠的字符串的 Bash 变量,例如

myvar='line1\n\nline2\nline3'

您可以使用扩展转义序列

mytext=$(printf '%b' "$myvar")

如果您只想指定带有转义序列的文字字符串,请使用$''

mytext=$'line1\n\nline2\nline3'

答案2

使用内联回显:

$ echo -e "line1\n\nline2\nline3"
line1

line2
line3

相关内容