目标:仅输出大于1且小于-1的数据
或
输出1到-1之间的数据
我有 awk 的基础知识,可以打印第 2 列(我的数据所在的位置) 注意我还指定了 0-1 的范围
awk '/[0-1]/ {print $2}' test.dat
我还需要行号,所以我添加了 NR...
awk '/[0-1]/ {print $2 NR}' test.dat
为了确保我说得清楚,关键是要确定哪些数据行超出了可接受的范围,这样我们就可以在分析中忽略它们。 (即任何大于 1 或小于 -1 的变化都太大)。
您能提供的任何帮助都会很棒。我在下面粘贴了一些示例数据。
最佳答案
不确定您是否要评估每一列中的数据,或者是否需要测试特定列。测试单个列是最简单的;测试多个或所有列是该模式的相当简单的重复扩展。由于您特别提到了第 2 列,因此我们假设您只想在第 2 列介于 -1 和 1 之间时打印第 2 列:
awk -F, '($2 >= -1) && ($2 <= 1) { print $2 }'
要测试字段是否大于 1 或小于 -1:
awk -F, '($2 <= -1) || ($2 >= 1) { print $2 }'
打印不同的字段或整行( $0
)应该是相当明显的。要检查每个字段,只需重复整个 ($2 >= -1) && ($2 <= 1) { print $2 }
您感兴趣的每个字段的子句(很快就会变得冗长),或类似的内容(未经测试):
awk -F, '{ for (i = 1; i <= NF; ++i) if (($i >= -1) && ($i <= 1)) print $i; }'
关于awk - Awk 新手。与负数格式作斗争,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13126577/