特定の列の内容をawkに置き換える方法は?タブ区切りファイル

特定の列の内容をawkに置き換える方法は?タブ区切りファイル

似たような質問なのに、質問で扱っていない問題にぶつかりました。 特定の列の内容をawkに置き換える方法は?

同様の作業をしたいのですが、ファイルはスペースで区切られず、タブで区切られています。フィールド3を変更したい。私のファイルが次のようになっているとしましょう。

NAME\tNUMBER\tID\tSEQ\t...\t...\t... 

フィールド3をADに変更したいとしましょう。

awk '{$3 = "AD"; print}' infile > outfile

私の出力は

NAME\tNUMBER\tAD SEQ ... ... ... ... ... ...

交換後、タブが空白になります。ファイルだけを出力できると確信していますが、フィールド区切り文字が変更されるtr原因が何であるかを知りたいです。awk

予想出力:

NAME\tNUMBER\tAD\tSEQ\t...\t...\t...\t

答え1

O出力FフィールドSの区切り文字をtabに設定する必要があります\t

1つの方法はオプションを使用することです-v

awk -vOFS='\t' '{$3 = "AD"; print}' file

awkBEGINブロックなど、内部の他の可能性は次のとおりです。

awk 'BEGIN{OFS="\t"}{$3 = "AD"; print}' file

設定しないと、デフォルトでOFSawk単一のスペースがフィールド区切り文字として使用されます。

関連情報