Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在条件下进行awk打印

在条件下进行awk打印
EN

Stack Overflow用户
提问于 2014-06-24 04:03:25
回答 3查看 455关注 0票数 1

我有一个简单的问题,但我想不出来。

我有一个文件,我想打印所有与我在awk if条件中指定的条件不匹配的行。但我可以把条件打印出来,另一个怎么做?

这是我的密码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
awk '{if ($18==0 && $19==0 && $20==0 && $21==0) print $0}' file

我也试过这个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
awk '{if !($18==0 && $19==0 && $20==0 && $21==0) print $0}' file

但是第二个不起作用,任何帮助都是值得感激的。谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-24 04:07:52

否定句(!)需要放在括号内:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
awk '{if (!($18==0 && $19==0 && $20==0 && $21==0)) print $0}' file

我们在里面再加一套包装所有的东西。

(FYI,如果您给出了它如何“不工作”(即!上的语法错误),那就更有帮助了。请记住包括错误信息或不适用于未来问题的症状!)

票数 2
EN

Stack Overflow用户

发布于 2014-06-24 04:43:06

在这里你可以:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
awk '$18+$19+$20+$21!=0' file

不需要print $0,因为它的默认操作。

票数 6
EN

Stack Overflow用户

发布于 2014-06-24 04:11:23

您还可以反转条件语句:

你想要的相反的是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
awk '{if ($18==0 && $19==0 && $20==0 && $21==0) print $0}' file

可以是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
awk '{if ($18!=0 || $19!=0 || $20!=0 || $21!=0) print $0}' file

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
awk '{if (!($18==0 && $19==0 && $20==0 && $21==0)) print $0}' file

例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
!cat file
A 0 0 0
B 1 1 1
C 1 0 1

awk '$2+$3+$4!=0' file
B 1 1 1
C 1 0 1

awk '{if ($2!=0 || $3!=0 || $4!=0) print $0}' file
B 1 1 1
C 1 0 1

awk '{if (!($2==0 && $3==0 && $4==0)) print $0}' file
B 1 1 1
C 1 0 1

awk '{if (!($2==0 || $3==0 || $4==0)) print $0}' file
B 1 1 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24386168

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文