awk はタブ区切りファイルに列を追加しません。

awk はタブ区切りファイルに列を追加しません。

次のコードを使用して、他の既存の列の計算に基づいて、タブ区切りのtxtファイルに2つの新しい列(15と16)を追加しています。

問題:新しい列データが端末に表示されますが、ファイルは列に更新されません。別のファイル()に送信すると列はcode ... > Sample.....2.txt存在しますが、区切り文字はタブから空白に変わります。

必須:タブ区切りファイルの既存の列計算に基づいて、コードの行に列15と16を追加します。

ファイル: Sample1_RVDB_sort_unique.txt

パスワード:

awk '{$15 = ($4/$13)*100; $16 = ($4/$14)*100; print}' Sample1_RVDB_sort_unique.txt

データ

utg000001l  acc|GENBANK|MH883318.1|White    80.263  608 99  16  282 877 184245  184843  4.44e-120   438 2022    270609

ベストアンサー1

入力ファイルがタブ区切りの場合は、入力フィールド区切り記号(FSまたはawk-Fオプションを使用)をタブ(\t)に設定する必要があります。それ以外の場合、awkはデフォルトのFS(1つ以上の空白を参照)を使用します。基本フィールド分割GNU awkドキュメントでは - しかし、これはawkだけでなくすべてのawkの動作ですgawk

出力をタブ区切りにするには、OFS出力フィールド区切り記号()もタブに設定する必要があります。それ以外の場合、awkはデフォルトのOFS(スペース)を使用します。

例えば

awk -F'\t' -v OFS='\t' '{ $15 = ($4/$13)*100;
                          $16 = ($4/$14)*100;
                          print
                        }' Sample1_RVDB_sort_unique.txt

おすすめ記事