次のコードを使用して、他の既存の列の計算に基づいて、タブ区切りの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