【问题标题】:Parsing csv using conditional statement in awk在 awk 中使用条件语句解析 csv
【发布时间】:2015-08-27 10:27:56
【问题描述】:

我有一个 csv 文件

文件.csv

C75ADANXX,5,20,,AGGCAGAA,AGAGTAGA,,,,,AB
C75ADANXX,5,21,,AGGCAGAA,GTAAGGAG,,,,,AB
C75ADANXX,5,22,,AGGCAGAA,ACTGCATA,,,,,AB
C75ADANXX,5,23,,AGGCAGAA,AAGGAGTA,,,,,TC
C75ADANXX,5,24,,AGGCAGAA,CTAAGCCT,,,,,TC
C75ADANXX,5,25,,TCCTGAGC,GCGTAAGA,,,,,TC

当我运行以下 awk 命令时:

awk -F "," '{print$11}' file.csv  ##prints last cloumn

我想用 TC 提取行;但下面的命令什么也没打印

awk -F "," '{if($11==TC){print$0}}' file.csv

我在编写命令时哪里出错了?谢谢。

【问题讨论】:

  • 无法复制,请指定您的平台。
  • 试试awk -F, '$11~/TC/'

标签: csv awk


【解决方案1】:

修改命令为

awk -F "," '{if($11=="TC\r"){print$0}}' file.csv 

此文件是从 windows 复制的,它在行尾有一个回车符,当您只打印最后一列时显然看不到。

【讨论】:

    【解决方案2】:

    修改

    awk -F "," '{if($11==TC){print$0}}' file.csv
    

    收件人

    awk -F "," '{if($11=="TC"){print$0}}' file.csv
    

    或者甚至很简单

    awk -F, '$11=="TC"' file.csv
    
    • if($11==TC) 由于变量 TC 之前没有定义(因为没有使用引号,awkTC 视为变量 not 作为字符串),它总是评估false,所以它什么也不打印。

    【讨论】:

    • 仍然不起作用 Akshay,我尝试了您提供的两种解决方案。它对你有用吗?
    【解决方案3】:

    试试这个

    grep ",TC$" 文件.csv

    【讨论】:

      猜你喜欢
      • 2016-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-08
      • 2014-12-28
      • 2013-07-16
      相关资源
      最近更新 更多