我有一个制表符分隔的文件,如下所示:
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 个之后的所有匹配。