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

Posted

技术标签:

【中文标题】在 txt 文件中的不同列中取两个特定值之间的行 [关闭]【英文标题】:Take lines between two specific values from different columns in a txt file [closed] 【发布时间】:2021-06-28 10:22:31 【问题描述】:

如何从 .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

以这个例子为例,假设我想从 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 并且在第二列中没有找到,我希望避免出现错误。

【问题讨论】:

请在您的问题中以代码的形式添加您的努力,这是非常鼓励的,谢谢。 你是这个意思吗? 在 Stack Overflow 上强烈鼓励提问者添加他们试图解决自己问题的代码,所以请添加它以避免投票和关闭投票,谢谢,干杯。 第二个字段总是小于第三个字段吗? 是的。没错 【参考方案1】:
awk -v sn="10385390" -v en="10385397" '$2>=sn && $3<=en print;nextexit' "file"
sn="10385390" 起始编号。 en="10385397" 结束号码。 "file"您的输入文件。

根据需要更改这些变量。

【讨论】:

以上是关于在 txt 文件中的不同列中取两个特定值之间的行 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从表中选择行,其中具有相同 id 的另一个表中的行在另一列中具有特定值

在列中的两个值之间重复值

找到根据矩阵中特定列中的行之间的绝对差排序的子集

Pandas:使用 apply 将特定列中的行值复制到新列中

SQL 聚合具有相同 id 的行,辅助列中的特定值

Pandas GroupBy 并选择特定列中具有最小值的行