2

1000 列の大きなファイルがあります。最後の列が 3 列目になるように並べ替えたい。このために私は使用しました、

cut -f1-2,1000,3- file > out.txt

しかし、これは順序を変更しません。

カットまたは awk の使用を手伝ってくれる人はいますか?

また、以下に示すように、列 10 と 11 を再配置します。

例:

1   10   11   2   3   4   5   6   7   8   9   12  13  14  15  16  17  18  19  20
4

4 に答える 4

10

この awk ワンライナーを試してください:

awk '{$3=$NF OFS $3;$NF=""}7' file

これは、最後の列を 3 列目に移動します。1000の場合、1000番目の列でそれを行います。

編集

ファイルがタブ区切りの場合は、次を試すことができます。

awk -F'\t' -v OFS="\t" '{$3=$NF OFS $3;$NF=""}7' file

EDIT2

例を追加します。

kent$  seq 20|paste -s -d'\t'                              
1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20

kent$  seq 20|paste -s -d'\t'|awk -F'\t' -v OFS="\t" '{$3=$NF OFS $3;$NF=""}7'
1   2   20  3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  

EDIT3

入力例はありませんでした。元のファイルに空の列がないと仮定します。(連続マルチタブなし):

kent$  seq 20|paste -s -d'\t'|awk -F'\t'  -v OFS="\t" '{$3=$10 FS $11 FS $3;$10=$11="";gsub(/\t+/,"\t")}7'
1       2       10      11      3       4       5       6       7       8       9       12      13      14      15      16      17      18      19      20

結局、これらのフィールドをループで出力できました。

于 2013-07-29T11:33:52.513 に答える