首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回包含某列范围内数字的行,但仅在列包含某一数字时才返回。

问返回包含某列范围内数字的行,但仅在列包含某一数字时才返回。
EN

Unix & Linux用户
提问于 2021-03-28 08:56:50
回答 1查看 452关注 0票数 0

关于这个问题..。返回包含某列返回列中某个范围内的数字行中某个范围内的数字的行

我知道如何删除在一定范围内包含数字的行。那么,如果我只想在另一列包含一个数字时删除行,怎么办?

例如,如果第二列包含4,而第三列包含50到85之间的数字,我想删除行吗?输入

代码语言:javascript
复制
a 3 44 563
d 4 55 11 
e 2 93 445
r 4 82 44
e 4 93 33

输出

代码语言:javascript
复制
a 3 44 563
e 2 93 445
e 4 93 33

我想我们可以做这样的事..。但这行不通。

代码语言:javascript
复制
awk '$2==4' & awk '$2 > 85 && $2 < 50' input > output

有人知道这个吗?值得注意的是,第二列只包含1-22个整数。

提前谢谢你!

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-03-28 12:00:24

这个awk条件将打印这些行:

代码语言:javascript
复制
awk '$2 != 4 || $3 > 85 || $3 < 50' input

当第二列不等于4,或者第三列大于85,或者第三列小于50时,它打印一行。

这种逻辑上的等价物应该具有同样的效果:

代码语言:javascript
复制
awk '! ($2 == 4 && $3 <= 85 && $3 >= 50)' input

正如注释中所指出的,为min <= num <= max编写范围比较的一种更清晰的方法是min <= num && num <= max。这将是:

代码语言:javascript
复制
awk '! ($2 == 4 && 50 <= $3 && $3 <= 85)' input
代码语言:javascript
复制
awk '$2 != 4 || $3 < 50 || 85 < $3' input
票数 4
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/642464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档