【问题标题】:How to read a columns from text file and store it in array? Bash如何从文本文件中读取列并将其存储在数组中?重击
【发布时间】:2024-01-21 09:31:01
【问题描述】:

在文本文件中,每一行都包含一些单词。好像

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

谁能帮忙?

【问题讨论】:

  • 是否要将文件的行存储在数组中?或者您是否有要拆分为单词的单行?不清楚你在问什么。
  • 我想从每一行将单词拆分为数组。需要这样的东西for every_line_in File ; do item1=$array_form_line_0[0] item2=$array_form_line_0[3] done
  • 你想要数组中的行,还是只在item1item2中?

标签: arrays bash split


【解决方案1】:

您可以使用read 逐行读取文件并将该行分配给数组。它相当脆弱,可能会根据文件内容而损坏。

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

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

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

【讨论】:

    【解决方案2】:

    那么,我不明白你为什么需要一个数组。你可以这样做:

    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]}"
    

    【讨论】:

      最近更新 更多