【问题标题】:Finding an element in a bash array and printing the row out在 bash 数组中查找元素并打印出该行
【发布时间】:2015-06-07 13:16:34
【问题描述】:

我有一个 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,寻找匹配的单词“is”

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

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

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

【问题讨论】:

    标签: arrays bash csv awk


    【解决方案1】:

    你做的太复杂了,当第三个字段是"is"时,你可以使用这个awk来打印完整的记录:

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

    【讨论】:

    • 哦..好吧。这很尴尬..这行得通。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    相关资源
    最近更新 更多