我有三個文件,我想從中提取一些列並將它們粘貼到一個新文件中。這些文件不一定具有相同的行數。它們按照第一列中的值排序。從多個.csv文件中提取列並將它們合併爲一個
文件1具有以下結構:
col1;col2;col3;col4
SAMPLE-1;1;1;1
SAMPLE-2;1;1;1
SAMPLE-3;1;1;1
SAMPLE-4;1;1;1
此文件由分隔 「;」代替 「」
文件2具有以下結構:
col5,col6,col7,col8
SAMPLE-1_OTHER_INFO,2,2,2
SAMPLE-2_OTHER_INFO,2,2,2
SAMPLE-3_OTHER_INFO,2,2,2
文件3具有以下結構:
col9,col10,col11,col12
SAMPLE-1_OTHER_INFO,3,3,3
SAMPLE-2_OTHER_INFO,3,3,3
SAMPLE-3_OTHER_INFO,3,3,3
輸出文件(summary.csv)應該是這樣的:
col1,col2,col4,col6,col7,col10,col12
SAMPLE-1,1,1,2,2,3,3
SAMPLE-2,1,1,2,2,3,3
SAMPLE-3,1,1,2,2,3,3
SAMPLE-4,1,1,,,,
基本上所有三個文件的第一列都包含樣本標識符。 file1的'col1'應該是輸出文件的第一列。 col1中的標識符應該與file2和file3的col5和col9中的標識符匹配。比較時不應該考慮'_OTHER_INFO'部分。
如果匹配,應添加文件2和3的col6,col7,col10和col12值的信息。
如果沒有比賽,該行仍然應該在輸出文件,但最後四列應該是空的(如在這種情況下,「樣品4」)
我正打算執行此操作用awk或'cut/paste'命令。但是我不知道我應該如何尋找col1,col5和col9中的值之間的匹配。
我會建議使用一些解釋的langauge像[蟒](https://stackoverflow.com/q (https://stackoverflow.com/questions/tagged/perl)或[ruby](https://stackoverflow.com/questions/tagged/ruby)。我相信Awk會有這種可能,使用這種語言之一應該會更容易。例如,在python中你可以使用[csv module](https://docs.python.org/2/library/csv.html),這是專門爲這樣的任務設計的。 –