在 txt 文件中的不同列中取两个特定值之间的行 [关闭]
Posted
技术标签:
【中文标题】在 txt 文件中的不同列中取两个特定值之间的行 [关闭]【英文标题】:Take lines between two specific values from different columns in a txt file [closed] 【发布时间】:2021-06-28 10:22:31 【问题描述】:如何从 .txt 文件中获取不同列的值之间包含的行?
我有一个包含许多列的文本文件(如下所示),我需要获取第二列位置到第三列位置之间的行。
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 的另一个表中的行在另一列中具有特定值