Awk的新手.挣扎着负数格式

jas*_*ard 3 awk

目标:仅输出大于1且小于-1的数据

要么

输出数据介于1和-1之间

我有awk的基础知识,可以打印第2列(我的数据在哪里)注意我也指定了0-1的范围

awk '/[0-1]/  {print $2}' test.dat
Run Code Online (Sandbox Code Playgroud)

我还需要有行号,所以我添加了NR ...

awk '/[0-1]/  {print $2 NR}' test.dat
Run Code Online (Sandbox Code Playgroud)

为了确保我清楚,重点是确定哪些数据行超出了可接受的范围,因此我们可以在分析中忽略它们.(即任何大于1或小于-1的东西都是太大的变化).

你能提供的任何帮助都会很棒.我在下面粘贴了一些示例数据.

http://pastebin.com/7tpBAqua

twa*_*erg 7

不确定是否要评估每列中的数据,或者是否需要测试特定列.测试单个列是最简单的; 测试多个或所有列是模式的相当简单的重复扩展.既然你提到第2列具体而言,我们假设你要打印第2列,只有当它为-1到1之间:

awk -F, '($2 >= -1) && ($2 <= 1) { print $2 }'
Run Code Online (Sandbox Code Playgroud)

要测试大于1或小于-1的字段:

awk -F, '($2 <= -1) || ($2 >= 1) { print $2 }'
Run Code Online (Sandbox Code Playgroud)

打印一个不同的字段,或整个行代替($0)应该是相当明显的.检查每个字段中,简单地重复整个($2 >= -1) && ($2 <= 1) { print $2 }对你感兴趣的领域的每一个这样的(未测试)条款(这很快得到详细),或东西:

awk -F, '{ for (i = 1; i <= NF; ++i) if (($i >= -1) && ($i <= 1)) print $i; }'
Run Code Online (Sandbox Code Playgroud)