首页 > 解决方案 > 将制表符分隔的数组转换为 bash 中的列表

问题描述

我有一个水龙头分隔的数组文件,看起来像

12479 12499 12518 12540 12557 12578 12585 12597 12608 12627 12634

我想得到类似的东西

12479 
12499 
12518 
12540 
12557 
12578 
12585 
12597 
12608 
12627 
12634 
12646

我的尝试:

while read line; do echo $line; done < file.dat

while IFS=$'\t' read -r -a file.dat; do  echo myArray; done < file.dat

我相信我缺少一些简单的语法,或者可能有更好的方法来做到这一点。有什么帮助吗?

标签: bash

解决方案


展开里面的文件(),使其成为一个数组。默认情况下,任何空格都将用作单词分隔符。

myArray=($(cat file.dat))
printf '%s\n' "${myArray[@]}"

您还可以使用该tr命令将制表符转换为换行符:

tr '\t' '\n' < file.dat

推荐阅读