我正在编写一个收录“无线电探空仪气象气球”的节目。数据并将其写入新文件。
数据的结构有7列。我只对第一列中包含4
,7
或9
的行感兴趣,并且数字小于或等于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
我的输出文件只有第一个位置有4
,7
或9
的行,但仍有数据超过9000 列4
和6
。
我做错了什么?
答案 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]$"
但如果你的数字更多,那么这不是一个好的解决方案。