特殊文字をテキストエディタで表示するにはどうすればよいですか?

特殊文字をテキストエディタで表示するにはどうすればよいですか?

「line1\n\nline2\nline3」というテキストがあり、それをコンソールで表示したり、テキストエディタにパイプしたいとします。

line1

line2
line3

したがって、特殊文字が評価されます。正規表現を変更せずにこれを実行できますか?

答え1

Bashにはバックスラッシュ拡張printf機能が組み込まれており、引用符で囲まれていないシェルコマンドで使用できるように文字列書式設定をサポートしています(たとえば、シェルがバックスラッシュとして特別に扱うすべての文字をエスケープします)。%b%q

つまり、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

関連情報