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

Using an if statement in awk in a bash script

我正在编写一个接收 'Radiosonde Weather Balloon' 数据并将其写入新文件的程序。

数据的结构有 7 列。我只对第一列中具有 479 且数字 小于或等于 9000[=32] 的行感兴趣=] 在第 4 列和第 6 列中。

这是我写的:

awk '{if ( == 4 ||  == 7 ||  == 9 &&  <= 9000 &&  <= 9000) print /10,/1e3,/10,/10,,/10}'  > sonde_tv

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

我做错了什么?

您需要将 'or' 个语句组合在一起:

awk '{if (( == 4 ||  == 7 ||  == 9) &&  <= 9000 &&  <= 9000) print /10,/1e3,/10,/10,,/10}'

你可以这样做:

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

或者像这样:

~"^[479]$"

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