使用数据填充shell脚本数组

时间:2012-11-21 22:37:39

标签: linux arrays bash shell

我想从文件中提取一些数据并将其保存在数组中,但我不知道该怎么做。

在下面我从/ etc / group中提取一些数据并将其保存在另一个文件中,之后我打印每一个项目:

awk -F: '/^'$GROUP'/ { gsub(/,/,"\n",$4) ; print $4 }' /etc/group > $FILE

for i in `awk '{ print $0 }' $FILE`
   do
     echo "member: "$i" "
   done 

但是,我不想将数据提取到文件中,而是提取到数组中。

3 个答案:

答案 0 :(得分:4)

members=( $(awk -F: '/^'$GROUP':/ { gsub(/,/,"\n",$4) ; print $4 }' /etc/group) )

带括号的赋值表示$members是一个数组。原始awk命令已包含在$(...)中,并添加冒号,以便在文件中包含groupgroup1,并查找group },你也没有得到group1的数据。当然,如果你想要两个条目,那么你放弃我添加的冒号。

答案 1 :(得分:2)

j=0
for i in `awk '{ print $0 }' $FILE`
do
  arr[$j] = $i
  j=`expr $j + 1`
done 

答案 2 :(得分:2)

arr=($(awk -F: -v g=$GROUP '$1 == g { gsub(/,/,"\n",$4) ; print $4 }' /etc/group))