2017-06-19 88 views
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 

的關鍵是使用IFS告訴read分裂整個輸入)-d '')轉換爲數組元素(-a; -r確保未修改的讀數)由\n,字符組成。

爲簡單起見,我用file代表輸入文件,並用它直接爲通過標準輸入(<)輸入到read

如果你有一個需要首先將整個文件讀入一個shell變量,下面的表格是在擊會更有效(但不是POSIX兼容):

input=$(< "/path/source_file") 
相關問題