关于这个问题..。返回包含某列返回列中某个范围内的数字行中某个范围内的数字的行
我知道如何删除在一定范围内包含数字的行。那么,如果我只想在另一列包含一个数字时删除行,怎么办?
例如,如果第二列包含4,而第三列包含50到85之间的数字,我想删除行吗?输入
a 3 44 563
d 4 55 11
e 2 93 445
r 4 82 44
e 4 93 33输出
a 3 44 563
e 2 93 445
e 4 93 33我想我们可以做这样的事..。但这行不通。
awk '$2==4' & awk '$2 > 85 && $2 < 50' input > output有人知道这个吗?值得注意的是,第二列只包含1-22个整数。
提前谢谢你!
发布于 2021-03-28 12:00:24
这个awk条件将打印这些行:
awk '$2 != 4 || $3 > 85 || $3 < 50' input当第二列不等于4,或者第三列大于85,或者第三列小于50时,它打印一行。
这种逻辑上的等价物应该具有同样的效果:
awk '! ($2 == 4 && $3 <= 85 && $3 >= 50)' input正如注释中所指出的,为min <= num <= max编写范围比较的一种更清晰的方法是min <= num && num <= max。这将是:
awk '! ($2 == 4 && 50 <= $3 && $3 <= 85)' inputawk '$2 != 4 || $3 < 50 || 85 < $3' inputhttps://unix.stackexchange.com/questions/642464
复制相似问题