从第 n 列到最后一列用空格替换制表符

从第 n 列到最后一列用空格替换制表符

我有一个制表符分隔的文件,如下所示:

GCF_000014165.1_ASM1416v1.dist_nbr_anntn        WP_011558474.1  1155234 1156286 44173   polyketide synthase [Mycobacterium]
GCF_000014165.1_ASM1416v1.dist_nbr_anntn        WP_011558475.1  1156298 1156807 12      isoprenylcysteine       carboxyl        methyltransferase       [Mycobacterium]
GCF_000014165.1_ASM1416v1.dist_nbr_anntn        WP_011558476.1  1156804 1157820 -3      NAD(P)/FAD-dependent    oxidoreductase  [Mycobacterium]

如何用空格替换从第 6 列到最后一列的制表符?

输出应如下所示:

GCF_000014165.1_ASM1416v1.dist_nbr_anntn        WP_011558474.1  1155234 1156286 44173   polyketide synthase [Mycobacterium]
GCF_000014165.1_ASM1416v1.dist_nbr_anntn        WP_011558475.1  1156298 1156807 12      isoprenylcysteine carboxyl methyltransferase [Mycobacterium]
GCF_000014165.1_ASM1416v1.dist_nbr_anntn        WP_011558476.1  1156804 1157820 -3      NAD(P)/FAD-dependent oxidoreductase [Mycobacterium]

答案1

使用 GNU sed,就像这样简单:

sed 's/\t/ /6g' file

s 命令后面可以跟零个或多个以下标志:

g 

将替换应用于正则表达式的所有匹配项,而不仅仅是第一个。

number 

仅替换正则表达式的第数字匹配项。

s 命令中的交互 注意:POSIX 标准没有指定混合使用 g 和 number 修饰符时会发生什么,并且目前在 sed 实现中还没有广泛商定的含义。对于 GNU sed,交互定义为:忽略第 3 个之前的匹配,然后匹配并替换第 3 个之后的所有匹配。

sed,流编辑器:s命令

相关内容