【问题标题】: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"

【问题讨论】:

    标签: arrays shell file line-breaks comma


    【解决方案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,数组元素用 (,) 逗号分隔。

      从标准输入流中读取输入

      输出格式:

      【讨论】:

      • 你能提供代码吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多