读取不同的字段并传递给awk以提取这些字段

时间:2016-11-18 14:05:44

标签: linux bash awk

可能这在某个地方得到了解答,但我所探讨的事情并不符合我的需要。

我想从一个文件(FILE1)中读取不同的字段并将其传递给awk脚本,该脚本可以从另一个文件(FILE2)中提取这些字段。

FILE1

1   156202173   156702173
2   26915624    27415624
4   111714419   112214419

所以读取此文件中的行并将其传递给以下脚本

awk ' BEGIN {FS=OFS="\t"};
{if ($1==$1 && $2>= $2 && $2<= $3 ) {print $0}}' FILE2 > extracted.file

FILE2看起来像这样;

1   156202182   rs7929618
16  8600861 rs7190157
4   111714800   rs12364336
12  3840048 rs4766166
7   20776538    rs35621824

所以awk脚本仅在与第一个字段匹配且值在第2个和第3个字段之间时打印。 预期输出

1   156202182   rs7929618
4   111714800   rs12364336

非常感谢您的回复。

1 个答案:

答案 0 :(得分:1)

应该有很多类似的问题,但编写脚本比查找更快。

$ awk 'NR==FNR{lower[$1]=$2; upper[$1]=$3; next} 
       lower[$1]<$2 && $2<upper[$1]' file1 file2

1   156202182   rs7929618
4   111714800   rs12364336