如何从文本文件中读取列并将其存储在数组中?巴什

时间:2017-11-07 13:51:38

标签: arrays bash split

在文本文件中,每行包含一些单词。它看起来像

split time not big
every cash flu green big
numer note word
swing crash car out fly sweet

如何拆分这些行并将其存储在数组中?我需要做类似这样的数组

for i in $file

do
echo "$array[0]"
echo "$array[2]"
done

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

您可以逐行读取文件read并将该行分配给数组。它相当脆弱,可能会因文件内容而中断。

while read line; do 
   array=( $line )
   echo "${array[0]}"
   echo "${array[2]}"
done < file

解析文本文件的更好方法是使用awk

awk '{print $1; print $3}' file

答案 1 :(得分:1)

我不明白你为什么需要一个阵列。你可以这样做:

while IFS= read -r line; do
    read -r item1 item2 item3 <<< "$line"
    printf '%s\n%s\n' "$item1" "$item3"
done < "$file"

但如果你愿意,你也可以让read给你一个数组:

    read -ra array <<< "$line"
    printf '%s\n%s\n' "${array[0]}" "${array[2]}"