echo でバックスペース文字を出力するオプション

たまにjsonの中身に\nが入ってて
「なんでこんなの入ってるのかなー?邪魔だなー」と思ってました。
わざわざ取り除くのがめんどうだなーと削除してました。

例えばAWSのSQSメッセージを見てそのままechoで出力しようとすると
\nが入ってて適切に出力されず、パイプしてjsonを読み取ろうとしても
エラーになることがありました。


でもechoの -e オプション使えばいいんですね


こんな風になります

echo -e "{\n \"Message\" : \"hogehoge\" \n}"

{
 "Message" : "hogehoge"
}

便利ですねー



他にもさまざまなエスケープ文字は使えますが
下記はよく使うかもしれません。

# タブ \t
echo -e "aaa\tbbb"
aaa     bbb

# 垂直タブ \v   これは知らなかったー!!
echo -e "aaa\vbbb"
aaa
   bbb

# 改行 \n
echo -e "aaa\nbbb"
aaa
bbb

参考
echoコマンド(引数で指定した内容を標準出力に出力する)

覚えて便利 いますぐ使える!シェルスクリプトシンプルレシピ54

覚えて便利 いますぐ使える!シェルスクリプトシンプルレシピ54