获取列值大于阈值的所有行

获取列值大于阈值的所有行

我有一个包含很多行和列的文件,但所有行中的列数并不相同。我想提取增量值大于 0.02 的所有行

Point          Fanout   cap   trans   delta   incr   Path
----------------------------------------------------------
row1             1       0.02  0.01   0.00     0.03   0.04
row2             2       0.04
row3             1       0.01  0.02    0.04    0.05   0.06
row4                     0.03
row5                           0.04     0.05    0.07  0.07

有人可以帮忙吗?如何 grep 所有这些行和相应的增量值?

答案1

正如评论中指出的,对于空格以外的分隔符(即制表符似乎是您的情况),以下解决方案可以正常工作。
如果分隔符是空格,则以下解决方案将不起作用。您需要澄清什么是真正的字段分隔符。

awk -F"\t" '$5>0.02' file
#or
awk -F"\t" 'NR==1{print;next}$5>0.02' file #to keep the header
#or
awk -F"\t" 'NR==1 || $5>0.02' file  #also keeps header as advised in comments
#or 
awk -F"\t" 'NR<=2 || $5>0.02' file   #keep header and dashed row bellow header as advised by @Sundeep 

如果您对数值的格式有疑问,您甚至可以尝试

awk -F"\t" '($5*1)>0.02' file

答案2

如果您尝试处理的是PrimeTime修复您的问题的时序报告timing violationscrosstalk noise violations那么我建议您使用特定EDA工具提供的命令(Tcl)。

重新发明轮子并不是真正的解决办法。

相关内容