将三列合并为一列(linux、python或perl)



我有一个文件(.tsv),其中包含调用所有示例的变体。我想把前三列合并成一列:

的例子:原:

文件名=变量。tsv祝辞我想要合并的前三列是:

lane sampleID Barcode

B31 00-00-NNA-0000 0000

所需输出:

IDb31_00 - 00 - nna - 0000 - _0000

推荐的方法是什么?

一种方法,使用perl一行代码:

perl -F't' -lane '
if ($. == 1) {
print join("t", "ID", @F[3..$#F])
} else {
print join("t", join("_", @F[0,1,2]), @F[3..$#F])
}' variants tsv

将每行拆分为制表符上的数组(@F),并使用该数组的切片打印出标题和后面的行,以提取适当的元素,然后将这些元素连接成分隔的字符串。

从这里开始

lane    sampleID    Barcode
B31 00-00-NNA-0000  0000

和使用Miller,你可以运行

mlr --tsv put -S '$ID=$lane."_".$sampleID."_".$Barcode' input.tsv >output.tsv

+------+----------------+---------+-------------------------+
| lane | sampleID       | Barcode | ID                      |
+------+----------------+---------+-------------------------+
| B31  | 00-00-NNA-0000 | 0000    | B31_00-00-NNA-0000_0000 |
+------+----------------+---------+-------------------------+

如果只需要ID字段,则命令为

mlr --tsv put -S '$ID=$lane."_".$sampleID."_".$Barcode' then cut -f ID input.tsv >output.tsv

相关内容

  • 没有找到相关文章

最新更新