【问题标题】:Awk filter csv by string start valueawk 按字符串起始值过滤 csv
【发布时间】:2016-04-13 10:00:37
【问题描述】:

我想从文件 CSV 中过滤掉第二列中以单词“CN”开头的行,并创建一个仅包含该记录的新 CSV 文件。

这是我的 csv 文件的示例

1;CN02BL00100000948999;;;
2;R30011781FUL1A60131PLCN1G34CN800166C0S00009C6UCB;;;
3;CN02BL00100000948569;;;
4;R 30011781FUL1A60131PLFG1G3BCC800625C0S00009C6UCB;;;

我在这个 sintax 中使用 awk

awk -F ";", '$1 ~ /CN/' $file > $TEMP/$file

但是这样我的新文件有第 1,2,3 行,而我想要的只有第 1,3 行

我尝试使用 ^ 以这种方式从字符串的开头过滤

awk -F ";", '$1 ~ /^CN/' $file > $TEMP/$file

但输出文件为空。怎么了?哪个语法正确?

【问题讨论】:

    标签: bash csv awk


    【解决方案1】:
    awk -F ";" '$2 ~ /^CN/' $file > $TEMP/$file
    

    不需要 , 。你还需要匹配$2 而不是$1

    【讨论】:

    • 谢谢它的工作!我知道那很愚蠢,不确定 1 美元 2 美元(两者都试过),但真正的问题是逗号......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 2022-10-19
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多