改行で区切られた文字列ファイルを配列に変換する方法

改行で区切られた文字列ファイルを配列に変換する方法

次のデータを含むファイルがあります。

UserName
UserName
UserName

各データは改行文字で区切られます。

このデータを文字列配列に変換して変数に保存する必要があります。

bashまたはシェルの実行でこれをどのように達成できますか?

答え1

そしてmapfile

$ mapfile -t array < yourfile

$ declare -p array # print array content
  declare -a array=([0]="UserName" [1]="UserName" [2]="UserName")

答え2

$ set -f             # disable globbing
$ arr=($(<file.csv))
$ set +f             # enable globbing
$ declare -p arr     # print array content
declare -a arr=([0]="UserName" [1]="UserName" [2]="UserName")
  • arr=(…)配列の作成
  • $(<file.csv)ファイルの読み取りfile.csv(例$(cat file.csv):)

*ファイルを読み取る前にワイルドカードを無効にするか、または特殊パターンなどの文字によるユーザー名拡張?(パス名拡張)を防ぐ必要があります。

要素は改行、空白、またはタブ($IFS変更されていないと仮定)で分割され、切り捨てられます。

答え3

i=0
while IFS= read -r line
do
  var[i++]="$line"
done < filename

ここで、var配列変数はすべての名前を格納します。以下からアクセスできます。

printf '%s\n' "${var[0]}"
printf '%s\n' "${var[1]}"
...
...

関連情報