Text-Processing

用從第 n 列到最後一列的空格替換製表符

  • April 10, 2019

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

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]

使用 GNU sed,它很簡單:

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

s 命令後面可以跟零個或多個以下標誌:

g 

將替換應用於正則表達式的所有匹配項,而不僅僅是第一個。

number 

僅替換 regexp 的第一個匹配項。

s 命令中的互動 注意:POSIX 標準沒有指定當您混合 g 和 number 修飾符時應該發生什麼,並且目前在 sed 實現中沒有廣泛同意的含義。對於 GNU sed,互動定義為:忽略第一個數字之前的匹配,然後匹配並替換從第一個數字開始的所有匹配。

參見sed,一個流編輯器:s命令

引用自:https://unix.stackexchange.com/questions/511656