【问题标题】:filtering a column with awk + if statement not working使用 awk + ​​if 语句过滤列不起作用
【发布时间】:2016-07-21 04:01:25
【问题描述】:

如何使用 awk 过滤列?

这是所有列:

$ awk -F'|' 'NR==1{print $7} NR>1{print $7;}' head_datafile_pipe_deleimiter.csv
"Product_Description"
"PREPAY PLUS - $0 -"
"$39.95 Plan"
"$69.95 Plan"
"$29.95 Carryover Plan 1GB"
"PREPAY PLUS - $0 -"
"$19 CO COMBO - NOT RECURRENT"
"$39.95 Plan"
"PREPAY PLUS - $1 - #33"
"PREPAY PLUS - $0 -"

现在我只想用这个"PREPAY PLUS - $0 -" 显示线条,但我的 if 似乎不起作用。 如何让它发挥作用?

$ awk -F'|' 'NR==1{print $7} NR>1{if($7=="PREPAY PLUS - $0 -") print $7;}' head_datafile_pipe_deleimiter.csv
"Product_Description"

【问题讨论】:

  • 我认为缺少双引号。
  • 试过了,但没有喜悦$ awk -F'|' 'NR==1{print $7} NR>1{if($7==""PREPAY PLUS - $0 -"") print $7;}' head_datafile_pipe_deleimiter.csv "Product_Description"我知道这是他们的想法。
  • 您能否发布您期望的示例文件输入和示例输出.. 可能是一个简单的grep 命令可能就足够了

标签: awk


【解决方案1】:
$ awk -F'|' -v dq='"' 'NR==1{print $7} NR>1{if($1==dq"PREPAY PLUS - $0 -"dq) print $7;}' test.in
"Product_Description"
"PREPAY PLUS - $0 -"
"PREPAY PLUS - $0 -"
"PREPAY PLUS - $0 -"

【讨论】:

  • 原来如此awk -F'|' -v dq='"' 'NR==1{print $7} NR>1{if($7==dq"PREPAY PLUS - $0 -"dq) print $7;}' head_datafile_pipe_deleimiter.csv "Product_Description" "PREPAY PLUS - $0 -" "PREPAY PLUS - $0 -" "PREPAY PLUS - $0 -"
猜你喜欢
  • 2017-04-23
  • 1970-01-01
  • 2012-02-25
  • 2012-07-16
  • 2021-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
相关资源
最近更新 更多