Возьмите строки между двумя конкретными значениями из разных столбцов в текстовом файле

Вам необходимо установить пакет разработки zlib:

pkg install zlib-dev
-2
01.04.2021, 14:44
1 ответ
awk -v begin=10385390 -v end=10385397 '($2 >= begin && $2 <= end) || ($3 >= begin && $3 <= end) || (begin <= $2 && end >= $3)' file

Это возвращает любую строку с диапазоном [$2,$3], перекрывающим заданный диапазон [begin,end].

Для заданных данных возвращает

1       10385389        10385390       .       21
1       10385390        10385391       .       22
1       10385391        10385392       .       22
1       10385392        10385393       .       21
1       10385393        10385394       .       22
1       10385394        10385395       .       25
1       10385395        10385396       .       25
1       10385396        10385397       .       25
1       10385397        10385398       .       25

Чтобы получить только строки с диапазоном [$2,$3], который находится внутри заданного диапазона [begin,end]:

awk -v begin=10385390 -v end=10385397 '$2 >= begin && $3 <= end' file
2
28.04.2021, 22:54

Теги

Похожие вопросы