delimsとは?

BASH,bat,バッチ

delimsオプションはforコマンドの時に文字を削除する機能があります。今回はforコマンドで特定の文字が削除されることを実例を用いて解説します。

それでは実際にやってみましょう。

この記事が参考になる方

  • forコマンドを使って、特定の文字を削除する方法を知りたい方
  • delimsについて詳しく知りたい方

例1:delimsを使わずに、forコマンドをつかう

下記の文をforコマンドを使って、表示します

私は、太郎で、18歳です。
私は花子で20歳です。
2人は、、、結婚しています。

コードはこちら。

@echo off
for /f %%i in (例文.txt) do (
 echo %%i
)

@echo offはコマンドの処理内容を表示せず、結果のみ表示するコードです。

2行目のforコマンドで例文.txtの内容を読み込みます。/fは1行ずつ読み込むオプションです。

3行目はechoコマンドで変数iの内容を表示します。変数iは例文.txtの内容か入っています。

バッチファイルをコマンドプロンプトで表示します。結果はこちら

例文.txtの内容が表示されましたね。単純に表示するなら、typeコマンドやmoreコマンドでもいいですが、次節から解説しますとおり文字を削除する時はforコマンドを使用する必要があります。

例2:ある文字を消して表示する。

前節のコードを使用して、ある文字を消します。やっとdelimsオプションを使用します。

コードはこちら。「”」で文字を囲み、delimsオプションの後に消したい文字を記載します。今回は「、」を消しますので、「”delims=、”」と表示します。

@echo off
for /f "delims=、" %%i in (例文.txt) do (
  echo %%i
)

コマンドプロンプトの結果はこちら。

「、」以降の文字が消えていることがわかります。これはforコマンドが空白までの文字を認識し、表示されるからです。

delimsオプションによって、「、」が消去され、カッコの部分が空白になります。

1行目の「私は、太郎で、18歳です。」が「私は 太郎で 18歳です。」になります。

「私は」までがforコマンドの変数iに入り、echoコマンドによって変数iが表示されます。

「太郎で~」以降は空白が挟まれているので、変数iには入りません。このため、echoコマンドでも表示されません。

「太郎で〜」以降を表示する場合は次節より解説します。

例1と例2を比べます

例3:ある文字を消しつつ、消したあと文も表示する

前節ではdelimsで特定の文字を消去しました。文字を消去すると、空白になり消された文字の後は表示されませんでした。

そこでtokensオプションを使い、特定の文字を消しつつ、消した後も表示する方法を紹介します。

それでは実際に下記のコードを入力してみてください。

@echo off
for /f  "tokens=1-2 delims=、" %%i in (例文.txt) do (
  echo %%i %%j
)

前節と違うところは2点。

  • tokens=1-2
  • %%j

tokensで区切り文字の表示を設定しています。

変数%%jは変数の2番目が入っています。1番目は%%iです。

よくわからないと思うので、実際にやってみましょう。

コマンドプロンプトの結果はこちら。

前節と比べると、2箇所追加されましたね。

  • 太郎で
  • 結婚しています。

tokensで区切り文字の2番目が入るように設定されました。

変数%%jで2番目の変数が設定されていますので、内容がechoコマンドによって表示されています。

ですが、これだと「18歳です。」が表示されません。表示する場合、tokensで3番目の区切り文字を表示するよう設定して、変数に格納し、echoコマンドで表示するやり方があります。それでは、次節で解説します。

例4:ある文字を消しつつ、消したあと文も表示する

前節では区切り文字の2番目まで表示しました。今回は3文字まで表示させます。

@echo off
for /f  "tokens=1-3 delims=、" %%i in (例文.txt) do (
  echo %%i %%j %%k
)

前節と異なる点は「tokens=1-3」。

前節は「tokens=1-2」ですので、二つ目までの文を表示しました。

今回は3なので、3文字まで表示します。

コマンドプロンプトの結果はこちら。

まとめ

以上でdelimsについて解説しました。

delimsの機能をまとめると、

  • forコマンドで文字を削除するときに使う機能
  • tokensオプションと組み合わせると、消したあとの文字を表示できる。

delimsオプションはforコマンドとセットでよく出てきます。使えこなせば、便利な機能ですので、ぜひ使ってみてください。

コメント

タイトルとURLをコピーしました