2015-04-02 64 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