我有以下腳本,使用AWK如果我打印輸出,以配合用戶輸入bash + awk:循環返回大小爲1的4個元素的數組?
NB=$#
FILE=myfile
#GET INPUT
if [ $NB -eq 1 ]
then
A=`awk -F "\t" -v town="$1" 'tolower($3) ~ tolower(town) {print NR}' $FILE`
fi
領域,有這麼一句話:
7188 24369 77205 101441
這是我所期待的。然後,如果我執行以下操作:
IFS=' '
array=($A)
echo ${#array[@]}
我實際上得到的長度爲1(?)。此外,如果我嘗試:
for x in $array
do
echo $x
done
實際上,它打印出:
7188
24369
77205
101441
我怎麼能有它返回4.長度,我不明白是怎麼for...in
作品如果只有1元?
編輯:
回聲$A | od -c
之前創建陣列是:
0000000 7 1 8 8 2 4 3 6 9 7 7 2 0 5
0000020 1 0 1 4 4 1 \n
0000030
回聲$A | od -c
後創建陣列是:
0000000 7 1 8 8 \n 2 4 3 6 9 \n 7 7 2 0 5
0000020 \n 1 0 1 4 4 1 \n
0000030
是否有你設置IFS ='''的原因?默認值應該適用於您,因爲它已包含換行符。 – chepner 2013-03-11 12:56:53
我想我使用不同的代碼從awk渲染到數組。但你是對的,現在似乎工作......感嘆。我認爲我的價值觀之間有空間,所以我想成爲100%的分隔符是正確的。 – 2013-03-11 15:05:29