2015-04-02 102 views
1

我曾以此爲csv文件:尋找在bash數組中的元素和打印排出來

Column1,Column2,Column3,Column4 
wow,this,is,awesomeee 
we,are,going,to 
what,is,the,name 

這是腳本:

names=($(awk < example_list.csv -F, '{print $2}')) 
lines=($(awk < example_list.csv -F, '{print $0 $1 $2 $3 }')) 

for i in "${names[@]}" 
do 
     if [ ${names[i]}=="is" ] 
     then 
       echo ${lines[i]} 
     fi 
done 

我的目標是找到一個匹配的第三列(索引2)並基於該匹配索引打印整行。

在這種情況下:

我整個第三列保存到數組(names

我所有列和行保存到第二陣列(lines

然後我通過陣列迭代names,找一個匹配的單詞「is」

如果找到了,我根據匹配的索引從數組list打印出整行。

不幸的是,這是行不通的。所有這一切都打印出的是:

Column1,Column2,Column3,Column4Column1Column2Column3 
Column1,Column2,Column3,Column4Column1Column2Column3 
Column1,Column2,Column3,Column4Column1Column2Column3 
Column1,Column2,Column3,Column4Column1Column2Column3 

回答

2

你正在做的太複雜,你可以使用這個awk打印完整的記錄時,第三場是"is"

awk -F, '$3=="is"' file 
wow,this,is,awesomeee 
+1

哦..好。這很尷尬..這工作。謝謝! – user2883071 2015-04-02 14:33:40

+0

不客氣,很高興它的工作。 – anubhava 2015-04-02 14:39:01