在 bash 脚本中使用 awk 中的 if 语句
Using an if statement in awk in a bash script
我正在编写一个接收 'Radiosonde Weather Balloon' 数据并将其写入新文件的程序。
数据的结构有 7 列。我只对第一列中具有 4
、7
或 9
且数字 小于或等于 9000[=32] 的行感兴趣=] 在第 4 列和第 6 列中。
这是我写的:
awk '{if ( == 4 || == 7 || == 9 && <= 9000 && <= 9000) print /10,/1e3,/10,/10,,/10}' > sonde_tv
我的输出文件只有第一个位置有 4
、7
或 9
的行,但它仍然有数据 超过 9000 在 4
和 6
列中。
我做错了什么?
您需要将 '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]$"
但如果您的数字位数更多,这不是一个好的解决方案。
我正在编写一个接收 'Radiosonde Weather Balloon' 数据并将其写入新文件的程序。
数据的结构有 7 列。我只对第一列中具有 4
、7
或 9
且数字 小于或等于 9000[=32] 的行感兴趣=] 在第 4 列和第 6 列中。
这是我写的:
awk '{if ( == 4 || == 7 || == 9 && <= 9000 && <= 9000) print /10,/1e3,/10,/10,,/10}' > sonde_tv
我的输出文件只有第一个位置有 4
、7
或 9
的行,但它仍然有数据 超过 9000 在 4
和 6
列中。
我做错了什么?
您需要将 '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]$"
但如果您的数字位数更多,这不是一个好的解决方案。