【发布时间】:2018-09-16 23:52:51
【问题描述】:
我想打印文件 1 中的所有行,其中 $1 和 $4 的值位于文件 2 的 $1 和 $4 中,并且文件 1 $2 中的值大于或等于文件 2 $2 中的值并且其中文件 1 $3 中的值小于或等于文件 2 $3 中的值。
文件 1
1 110201809 117658766 a
1 168095261 182305990 b
1 215456074 233436403 c
2 9465687 12905490 d
2 28765309 35235120 e
2 48958595 64702082 f
文件 2
1 245371026 249210707 a
2 937388 46504962 h
2 937388 162731186 b
2 2954974 6777829 c
2 9465687 12996275 d
2 14539477 44757554 d
2 14766820 30080818 m
2 16531332 23584565 n
2 17340076 26206255 o
2 18535880 24452180 p
2 28830071 35289330 q
2 36206662 47273732 r
2 48958495 64703082 f
Desired output 只打印文件 1 中满足条件的行。
想要的输出
2 9465687 12905490 d
2 48958595 64702082 f
我尝试了以下给出一个空文件的方法:
awk 'NR==FNR{ a[$1,$4]= $0; b[$2] = $2 ; c[$3] = $3; next } ($1 $4 in a) && ($2 >= b[$2]) && ($3 <= c[$3])' file2 file1>desired output
【问题讨论】:
标签: arrays awk associative-array