如何在UNIX的列中找出大于10的缺口?

时间:2019-02-03 19:30:31

标签: unix

我有一个2列文件,我试图查找连续数字中大于10的空隙:

文件的升序如下:

a     12

b     16

c     19

d     25

e     28

f     38

g     **40**

h     **55**

i     56

j     59

k     62

我希望能够为第二列中两个ADJACENT数字的值大于10的每次出现打印每个第一列标识符(a-k)。

例如,我在这里寻找的输出是: g,h (因为与g和h相关联的第二列之差大于10)

非常感谢您的帮助:)

2 个答案:

答案 0 :(得分:0)

使用perlawk或什至仅使用shell脚本(例如, g。:

while read ID num
do  if expr "$num" - "$prenum" ">" 10 >/dev/null 2>&1   # discard expr output
    then    echo $preID, $ID
    fi
    preID=$ID prenum=$num
done <2_column_file # your 2 column file

我假设您的 2列文件实际上并不包含空行,但是上面的内容是SO格式问题的产物(您可能已经使用```行了)。

答案 1 :(得分:0)

使用awk

a = [[1,2,'aaa'] , [3,4,'nnnn']
for i, item in enumerate(a):
    if item[0] == 1 and item[1] == 2:
    print(i)
    break

带有输入

awk ' { c=$2; if(c-p>10 && NR>1 ) { print a,p; print $0 } p=c;a=$1 } '