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

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 来表示您的输入文件,并直接通过标准输入 (&lt;) 将其用作read 的输入。

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

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

【讨论】:

【参考方案2】:

输入格式:

从第 1 行读取 inarr1,数组元素用 (,) 逗号分隔。

从第 2 行读取 inarr2,数组元素用 (,) 逗号分隔。

从标准输入流中读取输入

输出格式:

【讨论】:

你能提供代码吗?

以上是关于从用逗号和换行符分隔的文件中读取数组的主要内容,如果未能解决你的问题,请参考以下文章

将文件读入以逗号和换行符分隔的向量

PL SQL从用逗号分隔的字符串创建数字数组[重复]

Pig - 删除 gzip 文件中嵌入的换行符和逗号

不要在angularjs的textarea中输入超过20个逗号分隔或换行符分隔的序列号和字母数字

CSV文件转换帮助类

ruby Amazon ASIN正则表达式和Ruby用于从逗号分隔或换行符分隔的textarea中提取asins