根据开始和结束范围进行awk检查:

时间:2014-05-13 11:38:12

标签: awk

如果第一个文件第一个字段落在一个范围内,则想从第一个文件中提取所有行 第二个文件第三个字段(开始范围)和第四个字段(结束范围)

尝试过以下命令并且不完整,请帮忙

awk -F"," 'NR==FNR{ start[$1] = $3; end[$1] = $4; next } ( ($1 >= start[$1]) && ($1 <= end[$1]) )' f22.txt f11.txt

f11.txt

12,abc,ppp
15,def,ppp
20,xyz,ppp
6,hij,ppp
8,mno,ppp

f22.txt

Data1,Data2,Start,End
qqq,www,1,5
qqq,www,10,15
qqq,www,7,9

期望的输出:

12,abc,ppp
15,def,ppp
8,mno,ppp

2 个答案:

答案 0 :(得分:0)

这一行应该完成这项工作:

awk -F, 'NR==FNR{s[NR]=$3;e[NR]=$4;n++;next}
     {for(i=1;i<=n;i++)if($1>=s[i]&&$1<=e[i]){print;break}}' file2 file1

答案 1 :(得分:0)

awkgrep

awk -F, '{for (i = $3; i <= $4; i++) {print "^"i","}}' input2 | grep -f - input1