我想逐行将文件读入脚本。文件中的每一行都是多个值,每个值由一个标签分开,我想将每一行读入一个数组。
典型的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
您非常接近:
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'告诉它仅使用标签来分的话,不是也经常猛砸默认注意,这种方法会将一个或多个制表符视为定界符,因此,如果任何字段为空白,则后面的字段将被“移动”到数组中的前面位置。可以吗?)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。