Unix文件操作(IF匹配,AND(&gt; = x和<y))然后=“”this,=“”else =“”na =“”

时间:2018-03-23 04:19:16

标签: unix tab-delimited

=“ “

我有2个制表符分隔的文件 - 具有不同的列和&amp;每个行号。

请注意:第1列(每个文件中)中的某些“名称”会重复多次。每个真实文件都是数百万行。

文件1:

Sc1 10  20
Sc1 20  30
Sc1 30  40
Sc2 40  50
Sc2 50  60
Sc2 60  70
Sc3 70  80
Sc3 80  90
Sc3 90  100

文件2:

Sc1 22  23  100
Sc1 44  45  50
Sc2 60  61  25
Sc3 79  80  40
Sc3 100 101 40

我想测试以下内容:

如果第一列中的值&amp; File2的第一行与File1的第一列中的任何位置匹配,并且如果第二列与&amp; File2的第一行值>> =第二列File1但是&lt;第三列File1(在第一个'IF'中建立匹配后,它们将在File1的相应行上),然后将第4行第1行File2中的值写入File3,ELSE将NA写入File3。

在测试每个File2第1列值后,File3应如下所示:

100
NA
25
40
NA

我希望我已经说清楚,并且有人可以提供一些帮助:)

非常感谢

Ted(全新的unix和每天学习)

编辑 我可以在Excel中实现这一点:

从单元格A1:C9

粘贴文件1

从单元格D1:G5

粘贴文件2

在H1中编写以下公式:

= IF(COUNTIFS($ A $ 1:$ A $ 9,D1,$ B $ 1:$ B $ 9,“&lt; =”&amp; E1,$ C $ 1:$ C $ 9,“&gt;”&amp; E1 )大于0,G1, “NA”)

将公式复制到H5。

但是 - 真实世界的文件超过了Excel的大小,所以将它转移到Unix是我的问题。

0 个答案:

没有答案