seq -w
は、連続する数字のゼロ埋めをする時に便利です。
たとえば
seq -w 10 とすると
$ seq -w 10 01 02 03 04 05 06 07 08 09 10
となります。ひと桁の数字も最初に0をつけて2桁になるようにしてくれます。
これを少し応用して、私はLinux環境においてひと桁の数字でも以下のようにしていました。
$ seq -w 05 01 02 03 04 05
しかし、今日、macOSでこれをやったところ以下のようにゼロ埋めがされませんでした。
$ seq -w 05 1 2 3 4 5
これを解決するために、 seq -f %02g 5
が有効でした。
$ seq -f %02g 5 01 02 03 04 05
ちょっとした気づきでしたので備忘録として記載しておきます。
いつも有用な記事をありがとうございます。
私も似たような経験がありますので共有させていただきます。
私の場合は01 02 03のような文字列から0を削除したいと思い、linuxでsedを用いてシェルスクリプトを作成し、macに流用していたのですが、macではうまく動かないことに気が付きました(BSDのsedだとオプションを使わないとバックスラッシュのエスケープを正規表現として認識してくれない)。そのときに知ったのがコマンドにはGNU系とBSD系があるということでした。
そこでmacにGNU系のコマンドをinstallしましたが、GNU系のコマンドは頭文字にgがつく(sedだとgsed)ので、linuxで作成したスクリプトを修正することなくそのままmacでも使えるようにするために、以下の記事を参考に裏でGNU系のコマンドが利用されるようにしました(私はbash_profileにPATHを設定しました)。
https://ryanparman.com/posts/2019/using-gnu-command-line-tools-in-macos-instead-of-freebsd-tools/
これだとlinuxのスクリプトに変更を加えなくてもmacで利用できるかなと思います(私は絶対に忘れそうなので。。。)。
釈迦に説法で、大変恐縮ですが、共有させていただきました。
吉田(NIH)
吉田先生、どうもありがとうございます!
おっしゃる通りですよね。
自分自身の環境はそのような工夫が一番ですね。
他の方にスクリプトを渡す時にGNUとBSDの違いを意識することが必要になりますね。