2016-10-04 48 views
1

我可以用grep,但我知道awk在这种情况下可能更有效。我正在学习,但尚未完成。打印大于两个字段的行

我有一些数据:

record1,14.2,10,50 
record2,10.7,5,- 
record3,9.3,6.8,10 
record4,8,2.7,10 
record5,5.5,22.4,10 
record6,3,23.6,55 
record7,2.7,14.6,- 

我想打印仅是大于大于7在字段3和大于10在字段4(同时除去任何dashs)因此线,输出会是这样:

record1,14.2,10,50 
record6,3,23.6,55 

我身边有使用awk '{print $3 > 7}',但是,就像我说的打,我不是伟大的awk和条件。我可以用grep来做,但我觉得这样做效率低下。任何帮助是极大的赞赏。

回答

4

awk脚本的结构是condition { action }。默认操作是{ print },它打印整个记录。

  • 您的条件是$3 > 7$4 > 10
  • 您的字段分隔符是逗号。

结合这些东西,我们得到:

awk -F, '$3 > 7 && $4 > 10' file