我有一个文件,每行有两个不同的单词,用逗号和换行符分隔。如何读取此文件并将每个单词存储在数组中?我的代码不起作用,因为我觉得只适用于"一行"阵列。
文件示例:
每个单词用逗号和换行符分隔。
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"
答案 0 :(得分:2)
IFS=$'\n,' read -d '' -ra array < file
关键是使用IFS
告诉read
将整个输入({1}})拆分为数组元素(-d ''
; -a
确保未经修改的读数)-r
和\n
个字符。
为简单起见,我使用,
来表示您的输入文件,并使用直接作为file
的输入,通过stdin(read
)。< / p>
如果您确实需要首先将整个文件读入shell变量,则以下形式在Bash中稍微有效(但不符合POSIX):
<