タブ区切りフィールドを変数に入れる簡単な方法

タブ区切りフィールドを変数に入れる簡単な方法

Bashでは、行のフィールドを配列として読みました。強調すると、パフォーマンスは問題なので、サブプロセスを作成することは余裕がありません。

コードを読みやすくするために、フィールドを変数に入れたいと思います。次$width${array[0]}ように各変数を手動で設定する必要があります。これは重複します。

while read line; do

  array=($line)
  width=${array[0]}
  height=${array[1]}
  size=${array[2]}
  date=${array[3]}
  time=${array[4]}

  # use $width, $height, etc. in script

done < file

listPHPのディレクティブのようにこれを行う簡単な方法はありますか?

list($width, $height, $size, $date, $time) = $array;

ベストアンサー1

例:

while read -r width height size thedate thetime; do
    # use variables here
done <file

これは標準入力からデータを読み取り、データをスペース(スペースまたはタブ)に分割します。最後の変数は「残りの」データをすべて取得します(読み込んだ変数よりもフィールドが多い場合)。これは変える変数を読みますline

ユーティリティ名の代わりに変数名thedateとを使用しました。thetimedatetime

区切り線タブのみIFS次に設定されたタブread:

IFS=$'\t' read -r width ...etc...

また見なさい:

おすすめ記事