通过读取文件来创建数组的功能

时间:2009-11-14 17:51:14

标签: unix

我正在创建将存储管道分隔文件内容的脚本。每列都存储在一个单独的数组中。然后我从数组中读取信息并进行处理。有20个管道分隔文件,我需要编写20个脚本。信息存储在阵列中后,每个脚本中将发生的处理是不同的。每个管道分隔文件中的列数不同(但在任何情况下都不会超过9列)。我需要在每个脚本的开头将这些信息存储在数组中。我目前的做法如下。我希望您能帮助我了解如何编写函数来执行此活动。

cat > example_file.txt <<End-of-message
some text first row|other text first row|some other text first row
some text nth row|other text nth row|some other text nth row
End-of-message
# Note that example_file.txt will available. I have created it inside the script just to let you know the format of the file
OIFS=$IFS
IFS='|'
i=0
while read -r first second third ignore
do
    first_arr[$i]=$first
    second_arr[$i]=$second
    third_arr[$i]=$third
    (( i=i+1 ))
done < example_file.txt
IFS=$OIFS

1 个答案:

答案 0 :(得分:0)

以下是对您的脚本进行的一些最小的更改,可以让您更进一步......

...
...
while read -r first second third ignore
do
    arr0[$i]=$first
    arr1[$i]=$second
    arr2[$i]=$third
    (( i=i+1 ))
done < example_file.txt
IFS=$OIFS

proc0 () {
  for j in "$@"; do
    echo proc0 : "$j" 
  done
}

proc1 () {
  echo proc1
}

proc2 () {
  echo proc2
}

for i in 0 1 2; do
  t=arr$i'[@]'
  proc$i "${!t}"
done