我有一个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)
非常感谢您的帮助:)
答案 0 :(得分:0)
使用perl
,awk
或什至仅使用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 } '