用逗号和换行符隔开文件读取数组
问题描述:
我有一个文件每行有两个不同的单词,用逗号和换行符分隔。你怎么读这个文件并将每个单词存储在一个数组中?我的代码不工作,因为我认为只适用于“一行”数组。用逗号和换行符隔开文件读取数组
文件示例:
每个字由一个逗号和换行符分开。
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")