0

我有一个包含 4 列的文件。第 2 列和第 4 列有数字。

一个 55 k 3
b 59 l 3
c 79 米 277
d 255 n 277
e 257 或 267
f 267 p 287
克 290 克 287
小时 290 转 287
i 310 s 900

我需要将第 2 列的所有行与第 4 列中的行进行比较,不限于相同的行,并且只选择第 4 列中的那些行,其中第 4 列中的值大于第 2 列中的值,范围为 1 到 30 . 例如,第 4 列中的第 3 行也将被选中,因为它与第 4、5、6 行中第 2 列中的值在同一范围内存在差异。满足上述条件的示例文件的可能输出可能如下所示。

米 277
277
o 267
第 287 页
q 287
287

抱歉,如果我没有清楚地提出我的问题,请提前感谢您。

4

1 回答 1

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]}'

基本上,您跟踪第四列的所有可行值。您还可以跟踪第三列和第四列数据。然后,最后,您检查每个值并查看它们是否可行

于 2013-06-25T01:21:26.273 回答