Grep在一行中的任意位置大于整数的值

时间:2019-06-04 15:21:01

标签: awk grep

Grep表示字符串中随机位置的值大于已知值。

例如, 我的文件是

ContactsController

此处b的值是除法后的值。 b = 1000/2是500

操作将永远是分裂的。

如何对b> = 500的所有值进行grep处理。既然b可以出现在行中的任何位置?

3 个答案:

答案 0 :(得分:2)

awk来营救!没有eval函数,但是鉴于它始终是一个除法,您可以实现它。

$ awk -F'[,:]' '{for(i=1;i<NF;i+=2) 
                   if($i=="b") 
                     {split($(i+1),b,"/"); 
                      if(b[1]/b[2]>=100) print $i":"$(i+1)}}' file

b:999/3
b:1000/2

您还可以打印计算出的值,但不清楚所需的内容。

答案 1 :(得分:1)

考虑到您的Input_file与显示的示例相同,您可以尝试进行以下操作(经过GNU awk测试)。

awk 'BEGIN{FS="[:/]";RS="[\n,]"} $1=="b" && ($2/$3>=500)'  Input_file

答案 2 :(得分:1)

$ awk -v RS=, -F'[:/]' '$1=="b" && ($2/$3)>=500' file
b:1000/2