开发者社区> 问答> 正文

将制表符分隔的文件行读入数组

我想逐行将文件读入脚本。文件中的每一行都是多个值,每个值由一个标签分开,我想将每一行读入一个数组。

典型的bash“逐行读取文件”示例;

while read line do echo $line; done < "myfile" 对我而言,myfile看起来像这样(制表符分隔的值);

value1 value2 value3 value4 value5 value6 在循环的每次迭代中,我希望每行都进入一个数组,以便我可以

while read line into myArray do echo myArray[0] echo myArray[1] echo myArray[2] done < "myfile" 这将在第一次循环迭代中打印以下内容;

value1 value2 value3 然后在第二次迭代中它将打印

value4 value5 value6 这可能吗?我能看到的唯一方法是编写一个小的函数来手动分解值,为此bash中内置了对此的支持吗? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-09 14:06:19 549 0
1 条回答
写回答
取消 提交回答
  • 您非常接近:

    while IFS=$'\t' read -r -a myArray do echo "${myArray[0]}" echo "${myArray[1]}" echo "${myArray[2]}" done < myfile (该-r告诉read那个\是不是在输入数据的特殊;在-a myArray告诉它拆分输入行成文字并存储在结果myArray;以及IFS=$'\t'告诉它仅使用标签来分的话,不是也经常猛砸默认注意,这种方法会将一个或多个制表符视为定界符,因此,如果任何字段为空白,则后面的字段将被“移动”到数组中的前面位置。可以吗?)

    2020-02-09 14:06:29
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载