用逗号和换行符隔开文件读取数组

用逗号和换行符隔开文件读取数组

问题描述:

我有一个文件每行有两个不同的单词,用逗号和换行符分隔。你怎么读这个文件并将每个单词存储在一个数组中?我的代码不工作,因为我认为只适用于“一行”数组。用逗号和换行符隔开文件读取数组

文件示例:

每个字由一个逗号和换行符分开。

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" 

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

的关键是使用IFS告诉read分裂整个输入)-d '')转换为数组元素(-a; -r确保未修改的读数)由\n,字符组成。

为简单起见,我用file代表输入文件,并用它直接为通过标准输入(<)输入到read

如果你有一个需要首先将整个文件读入一个shell变量,下面的表格是在击会更有效(但不是POSIX兼容):

input=$(< "/path/source_file")