如果数字高于使用sed或awk的特定整数,则提取模式

时间:2016-03-22 09:30:21

标签: awk sed

我想提取包含超过特定整数的数字的行,例如,如果我有以下代码

INTEGER ( 16 )
INTEGER ( 16 )
INTEGER ( 6 )
INTEGER ( 18 )

我想只保留包含INTEGER(n <= 16)的行,所以我希望将其作为输出

INTEGER ( 16 )
INTEGER ( 16 )
INTEGER ( 6 )

1 个答案:

答案 0 :(得分:2)

如果你可以确定数字之前和之后总是有空格,那么你可以使用这个awk:

awk '$3 <= 16' file

这只是检查第三个字段是否小于或等于16.

然而,使用这样的东西可能更安全:

awk -F'[^0-9]+' '/INTEGER *\( *[0-9]+ *\)/ && $2 <= 16' file

这会将字段分隔符设置为任意数量的非数字字符,因此第一个字段为空,第二个字段包含您感兴趣的数字。如果该行匹配该模式(方面是灵活的间距)和数字小于或等于16,打印行。