从用逗号和换行符分隔的文件中读取数组

时间:2017-06-19 20:29:53

标签: arrays shell file line-breaks comma

我有一个文件,每行有两个不同的单词,用逗号和换行符分隔。如何读取此文件并将每个单词存储在数组中?我的代码不起作用,因为我觉得只适用于"一行"阵列。

文件示例:

每个单词用逗号和换行符分隔。

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"

1 个答案:

答案 0 :(得分:2)

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

关键是使用IFS告诉read将整个输入({1}})拆分为数组元素(-d ''; -a确保未经修改的读数)-r\n个字符。

为简单起见,我使用,来表示您的输入文件,并使用直接作为file的输入,通过stdin(read)。< / p>

如果您确实需要首先将整个文件读入shell变量,则以下形式在Bash中稍微有效(但不符合POSIX):

<