2012-11-21 62 views
0

我想從文件中提取一些數據並將其保存在一個數組中,但我不知道該怎麼做。用數據填充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 

不過,我不想提取數據轉換成文件,但轉換成數組。

回答

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

與括號中的分配指示$members是一個數組。原始awk命令已包含在$(...)中,並且添加了冒號,以便如果文件中有groupgroup1,並且您尋找group,則您也不會收到group1的數據。當然,如果你想要兩個條目,那麼你放棄我添加的冒號。

2
j=0 
for i in `awk '{ print $0 }' $FILE` 
do 
    arr[$j] = $i 
    j=`expr $j + 1` 
done 
2
arr=($(awk -F: -v g=$GROUP '$1 == g { gsub(/,/,"\n",$4) ; print $4 }' /etc/group)) 
+0

+1正是我所擁有的。你應該總是引用你的變量 – Steve

+0

@steve不是,你在比較錯誤的列到$ GROUP。 – Barmar