入力(タブ区切り)
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
答え2
私はスペースをフィールド区切り文字として使用し、フィールド間のタブを使用して完璧な方向を取得します。
awk -F" " '{print $3"\t"$4"\t"$5"\t"$2"\t"$1"\t"$6}' input.txt > output.txt
出力:
Chr1 143564 145684 AT1G01370 HTR12 +
Chr1 316128 319650 AT1G01920 SDG42 +
Chr1 544783 549202 AT1G02580 SDG5 +
答え3
1つのタブは8つのスペースに等しいので、次のコードを試してください。
awk '{printf "%8s%8s%8s%8s%8s%8s\n",$3,$4,$5,$1,$2,$6}' filename
Chr1 143564 145684 HTR12AT1G01370 +
Chr1 316128 319650 SDG42AT1G01920 +
Chr1 544783 549202 SDG5AT1G02580 +