从用逗号和换行符分隔的文件中读取数组
Posted
技术标签:
【中文标题】从用逗号和换行符分隔的文件中读取数组【英文标题】:Read array from file separated with commas and newlines 【发布时间】:2017-06-19 20:29:53 【问题描述】:我有一个文件,每行有两个不同的单词,用逗号和换行符分隔。你如何读取这个文件并将每个单词存储在一个数组中?我的代码不起作用,因为我认为仅适用于“单行”数组。
文件示例:
每个单词用逗号和换行符分隔。
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】:IFS=$'\n,' read -d '' -ra array < file
关键是使用IFS
告诉read
将整个输入(-d ''
)拆分为数组元素(-a
;-r
确保未修改的读取)\n
和,
字符。
为简单起见,我使用file
来表示您的输入文件,并直接通过标准输入 (<
) 将其用作read
的输入。
如果您确实需要先将整个文件读入 shell 变量,则以下形式在 Bash 中效率稍高(但不符合 POSIX):
input=$(< "/path/source_file")
【讨论】:
【参考方案2】:输入格式:
从第 1 行读取 inarr1,数组元素用 (,) 逗号分隔。
从第 2 行读取 inarr2,数组元素用 (,) 逗号分隔。
从标准输入流中读取输入
输出格式:
【讨论】:
你能提供代码吗?以上是关于从用逗号和换行符分隔的文件中读取数组的主要内容,如果未能解决你的问题,请参考以下文章