【问题标题】:Filter csv list with awk使用 awk 过滤 csv 列表
【发布时间】:2017-11-10 12:43:07
【问题描述】:

我有以下(更长的)csv 列表:

...
"AT3";"AT32";"AT322";"504";"50401"
"AT2";"AT13";"AT322";"504";"50401"
"AT2";"AT13";"AT31243";"604";"503401"
...

现在,我想过滤第二列中包含“AT13”的所有行。

我试过了:awk 'BEGIN {FS=","} {if($2 == "AT13") print}' GISA-OpenData.csv > WIEN.csv 但它没有给我任何输出。有谁知道这里可能是什么错误? WIEN.csv 始终为空。

非常感谢

【问题讨论】:

    标签: list csv awk


    【解决方案1】:

    你可以使用:

    awk -F";" '$2=="\"AT13\""' GISA-OpenData.csv > WIEN.csv
    

    由于您的字段分隔符 (FS) 只是一个逗号,因此您必须搜索 $2 的值何时被双引号括起来,我们在此转义。

    你也可以做一个像搜索这样的正则表达式,这样你就不必担心转义了:

    awk -F";" '$2~"AT13"' GISA-OpenData.csv > WIEN.csv
    

    【讨论】:

    • 谢谢!就是这样!我没有想到分隔符和双引号!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 2021-05-08
    • 2015-07-04
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多