[英]How to see if number in column from file1 is between numbers from columns in file2 using Bash - nested loops?
我想在bash命令行中执行以下操作...
我有2个档案。 File1看起来像。
585 1504 13 10000 10468 ID1
585 3612 114 10468 11447 ID2
585 437 133 11503 11675 ID1
File2看起来像。
400220 10311 10311
400220 11490 11490
400220 11923 11923
对于File2列2中的每个数字,我想知道它是否在File1列4和5中的任何数字对之间,并使用以下输出创建File3.txt ...
如果是,我想将File2的第2列和File1的第6列写入File3。 如果否,我想将File2的第2列和字符串“ NoID”写入File3。 因此,对于示例数据File3.txt应该看起来像这样。
10311 ID1
11490 NoID
11923 NoID
我曾经在Python上工作过,在那里我会使用嵌套的for循环和if语句编写脚本,但是更喜欢使用Bash(我仍然是一个相对初学者)。 在我看来,将类似的嵌套循环方法与awk和其他条件语句结合使用可能是可行的方法。 谁能用示例语法提出好的建议?
注意 实际文件包含超过300万行数据
提前加油
awk 'NR==FNR{f[NR]=$4;l[NR]=$5;id[NR]=$6;next}{for(i in id){if($2>f[i]&&$2<l[i]){printf "%-8s%s\n",$2,id[i];next}}printf "%-8s%s\n",$2,"NoID"}' file1 file2
输出:
10311 ID1
11490 NoID
11923 NoID
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.