我有一个包含4列的文件。第2列和第4列有数字。
a 55 k 3 b 59 l 3 c 79 m 277 d 255 n 277 e 257 o 267 f 267 p 287 g 290 q 287 h 290 r 287 i 310 s 900
我需要将第2列的所有行与第4列中的行进行比较,而不仅限于相同的行,并且仅选择第4列中的那些行,其中第4列中的值大于第2列中的值。例如,还将选择第4列中的第3行,因为它与第4,5,6行第2列中的值具有相同范围的差异。满足上述条件的样本文件的可能输出可能如下所示。
m 277 n 277 o 267 p 287 q 287 r 287
很抱歉,如果我没有清楚地表达我的问题,请提前谢谢。
答案 0 :(得分:4)
如果我理解正确,你想要
awk '{for(i=1;i<=30;++i) feasible[i+$2]=1;} {val[NR] = $4; letter[NR] = $3} END {for(y in val) if(feasible[val[y]]) print letter[y], val[y]}'
基本上,您可以跟踪第四列的所有可行值。您还可以跟踪第三和第四列数据。然后,最后,检查每个值并查看它们是否可行