BLOGTIMES
2018/01/23

bash の ANSI-C Quoting 「$'~' 」が便利

  sh 
このエントリーをはてなブックマークに追加

bash で ANSI-C Quoting という記法を見つけたのでメモ。

書き方はシングルクォートでの前に $ を置いて $'~' のようにするだけです。
一瞬何かの typo に見えますが、こうしておくことで文字列中で C 言語のエスケープシーケンスを使えるようになります
ちなみにクォートでは必ずシングルクォートでなければなりません

Bash Reference Manual: ANSI-C Quoting

3.1.2.4 ANSI-C Quoting
Words of the form $'string' are treated specially. The word expands to string, with backslash-escaped characters replaced as specified by the ANSI C standard.

これまで bash でタブ文字が欲しいときには echo -eprintf コマンドを使っていましたが、これを使うとシンプルに記述できますね。
sort や join のデリミタにタブ文字を渡したい時にも便利です。

$ echo -ne 'a\na\n' a a $ printf 'a\na\n' a a $ echo -n $'a\na\n' a a

bash も長年使っていましたが、こんな記法があるとは知りませんでした。


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/9926
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン