似たような質問なのに、質問で扱っていない問題にぶつかりました。 特定の列の内容を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
awk
BEGINブロックなど、内部の他の可能性は次のとおりです。
awk 'BEGIN{OFS="\t"}{$3 = "AD"; print}' file
設定しないと、デフォルトでOFS
はawk
単一のスペースがフィールド区切り文字として使用されます。