awk - 使用 awk 查找大于或等于 0.021 到 0 的值

标签 awk

我有一个包含三个部分的大文件。它的一部分只有 3 列,然后它移动到图像部分,它有 5 列,然后是有 7 列的旋转部分(我只想更改旋转部分)。 我试图让 awk 生成一个文件,将所有负值更改为 0 并将所有大于 0.2 的正数更改为 0 。 我关心的值仅在第 7 列中,并且必须位于包含单词 ROTATION 的行中。

这是我的尝试。

awk BEGIN '/ROTATION/ {if (function abs($7) > = 0.021) $7=0; print}' awktest.tlt > awktest1.tlt

我需要 awk 将其余数据也保留在那里,而不仅仅是产生从 X 到 0 的更改。

就执行而言,我使用的是awk -f fix.awk awktest.tlt

最佳答案

这样就可以了:

awk 'NF==7&&/ROTATION/{if($7<0||$7>0.2)$7=0}1' file

关于awk - 使用 awk 查找大于或等于 0.021 到 0 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15211751/

相关文章:

linux - 如何使用通配符从 linux 中的一行中删除特定模式

linux - 记录过滤

r - 如何在 R 中使用混合引号执行 awk 调用?

linux - 如果文件的列匹配,则 AWK 过滤文件

linux - 如何在 SED 中使用 AWK

bash - 根据 Bash 中的特定字符修剪字符串(尾部)

unix - awk,sed : How to parse and sum values from a string

awk - 狂欢 : Finding average of entries from multiple columns after reading a CSV text file

python - 解压并重新加入固定宽度文本

bash - shell 脚本 : check directory name and convert to lowercase