bashの機能やコマンドを利用して連番文字列を生成や加工する

スポンサーリンク

ブレース展開

bashの機能にブレース展開(Brace Expansion)があります。ブレースは数学の分野では'{}'のことで、ブレース展開は直訳すると中括弧展開とか波括弧展開とそのままの意味になります。
ブレース展開は以下のようなものになります。

このブレース展開は{x..y[..inc]}のように範囲を指定して用いることもできます。

連番の文字列を生成するために用いると

のようにして連番の文字列を生成できます。

連番の増加量を操作することもでき、数値を減少させることもできます。

ブレース展開の文字列の前後に文字列を追加するとファイル名のようにすることができます。

連番を改行したい場合はfor文やxargsコマンドを用いると便利だと思います。

xargs - 標準入力と引数を組み合わせコマンドを実行する
xargsはEX-argsと読み、引数を組み合わせるという意味を持ちます。xargsコマンドは標準入力からリストファイルを読み込み、引数のコマンドラインにそのリストファイルのアイテムを渡して、実行することができます。

ゼロパディングを行いたい場合は、数値の頭に0をつけます。

seqコマンドとawkコマンド

連番の文字列を生成するのによく利用するコマンドはseqコマンドでしょう。

連番の後にprintf関数が利用できると連番を都合がよい形式に加工ができます。
ここでは、awkコマンドからprintf関数を利用します。

awk - テキストデータのパターン処理を行う
awkはパターンマッチやテキスト処理が得意なプログラミング言語です。awkはプログラムのコンパイルが必要ないインタプリタ言語になります。 awkコマンドは、テキストデータである入力ファイルを行ごと処理することができ、一行で記述できる程度のプ...

また、print関数とsprintf関数を利用しても良いでしょう。

seqコマンドとxargs+printfコマンド

awkコマンド等からprintf関数を利用しなくても、基本的にprintfコマンドがあるでしょう。
しかし、単純にseqコマンドからprintfコマンドへパイプをつないでも利用できないので、xargsコマンドを利用します。

xargsコマンドの取得する引数の数を調整すれば、文字列を少し特殊に加工できます。

連番の文字列を並べる

pasteコマンドを利用すると連番の文字列を並べることができます。

<(command)はプロセス置換でコマンドの出力がファイルの代わりになります。

以下の感じにするとテストデータっぽく見えるかもしれません。

ファイル作成のコマンドを一気に実行

連番のテストファイルを一気に作成したい場合はxargsコマンドが利用できます。

また、シェルの標準入力からコマンドを読み取るオプション(例えば、bashではsオプション)を用いても良いでしょう。
まずは、生成したいテストファイルと作成するコマンドを確認してから

'bash -s'にパイプで渡すとファイルを作成できます。

もちろん、コマンド作成段階で中間ファイルを一度作ってからパイプで渡しても良いでしょう。

うまい具合に文字列を加工すれば、ファイルの作成だけではなく、ファイルのリネームや特定のファイル削除にも利用できます。