首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在bash脚本中使用awk中的if语句

在bash脚本中使用awk中的if语句
EN

Stack Overflow用户
提问于 2015-03-27 02:02:11
回答 2查看 54关注 0票数 1

我正在编写一个程序,接收“无线电探空气象气球”数据,并将其写入一个新文件。

数据是以7列的方式构造的。我只对第一列中有479的行感兴趣,在第4和第6列中也有小于或等于9000的数字。

这就是我所写的:

代码语言:javascript
复制
awk '{if ($1 == 4 || $1 == 7 || $1 == 9 && $4 <= 9000 && $6 <= 9000) print $2/10,$3/1e3,$4/10,$5/10,$6,$7/10}' $1 > sonde_tv

我的输出文件只有第一个位置有479的行,但在46列中仍然有超过9000的数据。

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-27 02:07:30

您需要将“或”语句组合在一起:

代码语言:javascript
复制
awk '{if (($1 == 4 || $1 == 7 || $1 == 9) && $4 <= 9000 && $6 <= 9000) print $2/10,$3/1e3,$4/10,$5/10,$6,$7/10}'
票数 2
EN

Stack Overflow用户

发布于 2015-03-27 07:48:55

你可以这样做:

代码语言:javascript
复制
awk '$1~"^(4|7|9)$" && $4 <= 9000 && $6 <= 9000) {print $2/10,$3/1e3,$4/10,$5/10,$6,$7/10}' file

或者像这样:

代码语言:javascript
复制
$1~"^[479]$"

但是如果你有更多的数字,这不是一个好的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29292094

复制
相关文章

相似问题

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