タブを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

■コマンドの後には、次のフラグのうち0個以上が続くことがあります。

g 

最初の項目だけでなく、正規表現に一致するすべての項目に置換を適用します。

number 

正規表現の数値項目のみを置き換えます。

sコマンドの対話注:POSIX標準は、gと数値修飾子を混在させるときに何が起こるかを指定せず、現在のsed実装間で広く合意されている意味はありません。 GNU sed の場合、相互作用は次のように定義されます。 3 番目の一致の前の一致を無視し、3 番目の一致以降のすべての一致を一致させ、置き換えます。

バラよりsed、ストリームエディタ:sコマンド

関連情報