Я хочу напечатать все строки из файла 1, где значения $1 и $4 находятся в $1 и $4 файла 2 И где значение в файле 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
Желаемый вывод печатает только те строки из файла 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
$1 SUBSEP $4
представляет собой конкатенацию этих 3 элементов, которые совпадают с ключами, используемыми в хэш-адресации, например.g[$1,$4]
.in g
проверяет, находится ли этот конкретный ключ в хэшеg
. 09.04.2018