我正在编写一个程序,接收“无线电探空气象气球”数据,并将其写入一个新文件。
数据是以7列的方式构造的。我只对第一列中有4、7或9的行感兴趣,在第4和第6列中也有小于或等于9000的数字。
这就是我所写的:
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的行,但在4和6列中仍然有超过9000的数据。
我做错了什么?
发布于 2015-03-27 02:07:30
您需要将“或”语句组合在一起:
awk '{if (($1 == 4 || $1 == 7 || $1 == 9) && $4 <= 9000 && $6 <= 9000) print $2/10,$3/1e3,$4/10,$5/10,$6,$7/10}'发布于 2015-03-27 07:48:55
你可以这样做:
awk '$1~"^(4|7|9)$" && $4 <= 9000 && $6 <= 9000) {print $2/10,$3/1e3,$4/10,$5/10,$6,$7/10}' file或者像这样:
$1~"^[479]$"但是如果你有更多的数字,这不是一个好的解决方案。
https://stackoverflow.com/questions/29292094
复制相似问题