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

时间:2015-03-27 02:02:11

标签: bash awk sh

我正在编写一个收录“无线电探空仪气象气球”的节目。数据并将其写入新文件。

数据的结构有7列。我只对第一列中包含479的行感兴趣,并且数字小于或等于9000 在第4和第6列中。

这就是我写的:

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的行,但仍有数据超过9000 46

我做错了什么?

2 个答案:

答案 0 :(得分:2)

您需要将“&#39;或”#39;组合在一起。语句:

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 :(得分:0)

你可以这样做:

awk '$1~"^(4|7|9)$" && $4 <= 9000 && $6 <= 9000) {print $2/10,$3/1e3,$4/10,$5/10,$6,$7/10}' file

或者像这样:

$1~"^[479]$"

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