【发布时间】:2018-09-16 09:39:02
【问题描述】:
我有两个制表符分隔的标题文本文件。
File1 有 11 列
Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9 Col10 Col1
1 NH1 NH1 Unknown 149578 B2 202410200023_R02C02
2 NH2 NH2 Unknown 149578 A4 202410200023_R04C01
10 NH10 NH10 Unknown 149578 A1 202410200023_R01C01
11 BU51 BU51 Unknown 149578 B3 202410200023_R03C02
12 BU52 BU52 Unknown 149578 A6 202410200023_R06C01
file2 有 4、5 或更多列。
Col1 Col2 Col3 Col4 Col5
BU51 149578 BU51 Unknown 1
BU52 149578 BU52 Unknown 1
NH1 149578 NH1 Unknown 1
NH2 149578 NH2 Unknown 1
我尝试使用文件 1 的第 2 到 4 列以及文件 2 的第 4 和 5 列进行输出。但是 file1 中的 col2 或 col3 需要与 file2 中的 col1 或 col2 匹配。输出列可能有新的位置。比如 file1 中的 column2 可能位于 output 中的 column1
我试图从How to compare and merge multiple files?
那里找到答案
我不知道为什么foreach my $key (keys %ref){ push( @{$ref{$key} }, $current{key}}
这条线不能正常工作。
【问题讨论】:
-
请出示您需要我们帮助您处理的代码:我们什么也做不了。数据文件中真的有空行吗?真的有列标题
Col1、Col2等吗? -
一种方法:使用DBD::CSV 将文件视为数据库中的表,并使用适当的SQL 语句将它们连接起来。
-
@Shawn:所以用那个模块写一个答案。
-
@Borodin:是的,数据中有空行,所有数据集都有标题。
标签: perl