【发布时间】:2018-02-12 12:12:12
【问题描述】:
使用 bash 脚本(Ubuntu 16.04),我正在尝试比较 2 个范围列表:file1 中任何范围中的任何数字是否与 file2 中任何范围中的任何数字一致?如果是这样,打印第二个文件中的行。在这里,我将每个范围作为 2 个制表符分隔的列(在 file1 中,第 1 行表示范围 1-4,即 1、2、3、4)。真实的文件很大。
文件1:
1 4
5 7
8 11
12 15
文件2:
3 4
8 13
20 24
期望的输出:
3 4
8 13
我最好的尝试是:
awk 'NR=FNR { x[$1] = $1+0; y[$2] = $2+0; next};
{for (i in x) {if (x[i] > $1+0); then
{for (i in y) {if (y[i] <$2+0); then
{print $1, $2}}}}}' file1 file2 > output.txt
这将返回一个空文件。
我认为脚本需要使用 if-then 条件进行范围比较,并遍历两个文件中的每一行。我找到了每个概念的示例,但不知道如何组合它们。
任何帮助表示赞赏!
【问题讨论】:
-
在 Bash 中执行此操作有多重要,为什么?在 Python、Perl 等中会更直接。
标签: linux bash awk range genetics