Grep表示字符串中随机位置的值大于已知值。
例如, 我的文件是
ContactsController
此处b的值是除法后的值。 b = 1000/2是500
操作将永远是分裂的。
如何对b> = 500的所有值进行grep处理。既然b可以出现在行中的任何位置?
答案 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