在bash数组中查找元素并将该行打印出来

时间:2015-04-02 14:26:02

标签: arrays bash csv awk

我将此作为csv文件:

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,寻找匹配的单词&#34;是&#34;

如果找到,我会根据匹配的索引从数组list打印出整行。

不幸的是,这不起作用。所有这些打印出来的是:

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

1 个答案:

答案 0 :(得分:2)

你使它过于复杂,当第3个字段为awk时,您可以使用此"is"打印完整记录:

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