2017-06-19 7 views
1

ファイルごとに、1行に2つの異なる単語があり、カンマと改行で区切られています。どのようにしてこのファイルを読み、すべての単語を配列に格納できますか?私のコードは "1行"配列でしか動作しないと思うので動作しません。カンマと改行で区切られたファイルから配列を読み込みます。

ファイル・サンプル:

各単語はカンマや改行で区切られています。

Dog,cat 
shark,rabbit 
mouse,bird 
whale,dolphin 

理想の入力

"${array[0]}" = Dog 
"${array[1]}" = cat 
"${array[2]}" = shark 
"${array[3]}" = rabbit 
"${array[4]}" = mouse 
"${array[5]}" = bird 
"${array[6]}" = whale 
"${array[7]}" = dolphin 

マイコード:

input=$(cat "/path/source_file") 
IFS=',' read -r -a array <<< "$input" 

答えて

2
IFS=$'\n,' read -d '' -ra array < file 

キーが入力全体を分割するreadを伝えるためにIFSを使用することです)-d '')を配列要素(-a; -r)は、\n,の両方の文字で、改変されていない読み取りを保証します。簡単にするために

、私はあなたの入力ファイルを表すためにfileを使用し、標準入力(<)を介してreadへの入力として直接それを使用しました。

あなたが最初のシェル変数にファイル全体を読み込む必要を持っている場合は、以下のフォームはバッシュで多少効率的である(しかし、POSIXに準拠していません):

input=$(< "/path/source_file") 
関連する問題