awkを使用してファイルを印刷する方法

awkを使用してファイルを印刷する方法

入力(タブ区切り)

HTR12   AT1G01370       Chr1    143564  145684  +
SDG42   AT1G01920       Chr1    316128  319650  +
SDG5    AT1G02580       Chr1    544783  549202  +

出力(タブ区切り)

Chr1    143564  145684  HTR12   AT1G01370       +
Chr1    316128  319650  SDG42   AT1G01920       +
Chr1    544783  549202  SDG5    AT1G02580       +

私の解決策は

awk -v OFS="\t" '{print $3,$4,$5,$2,$1,$6}' input > output

でも良くないようです。

ベストアンサー1

努力する

awk -F'\t' -v OFS='\t' '{print $3,$4,$5,$1,$2,$6}' input > output

これにより、両方に対してフィールド区切り記号(FS)が設定されます。

  • -F'\t'IFS(入力)、
  • -v OFS='\t'OFS(出力)。

私も交換し$1$2

サンプルファイルを追加しました。出力は次のようになります。

awk -F'\t' -v OFS='\t' '{print $3,$4,$5,$1,$2,$6}' se.txt
Chr1    143564  145684  HTR12   AT1G01370       +
Chr1    316128  319650  SDG42   AT1G01920       +

od -cチェックタブに追加)

awk -F'\t' -v OFS='\t' '{print $3,$4,$5,$1,$2,$6}' se.txt | od -c
0000000   C   h   r   1  \t   1   4   3   5   6   4  \t   1   4   5   6
0000020   8   4  \t   H   T   R   1   2  \t   A   T   1   G   0   1   3
0000040   7   0  \t   +  \n   C   h   r   1  \t   3   1   6   1   2   8
0000060  \t   3   1   9   6   5   0  \t   S   D   G   4   2  \t   A   T
0000100   1   G   0   1   9   2   0  \t   +      \n
0000113

おすすめ記事