在 txt 文件中不同列的两个特定值之间取行

Take lines between two specific values from different columns in a txt file

如何从 .t​​xt 文件中获取不同列值之间的行?

我有一个包含很多列的文本文件(如下所示),我需要获取包含在第二列位置和第三列位置之间的行。

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
1       10385398        10385399        .       25

以这个例子为例,假设我想 select 从 10385391 到 10385397,所需的输出是

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       10385389        10385390        .       21
1       10385391        10385392        .       22
1       10385392        10385393        .       21
1       10385393        10385394        .       22

如果用户输入 10385390 而在第二列中找不到,我想避免错误。

awk -v sn="10385390" -v en="10385397" '>=sn && <=en {print;next}{exit}' "file"
  • sn="10385390"为起始编号。
  • en="10385397"为尾号。
  • "file" 您的输入文件。

根据需要更改这些变量。