1

並べ替えたいファイルがあります...

入力ファイル:

sublat
16 0.04 0.051
32 0.04 0.050
16 0.06 0.055
32 0.06 0.054
c2dotc2
16 0.04 0.464
32 0.04 0.624
16 0.06 0.505 
32 0.06 0.743

出力ファイル:

 A      B    sublat   c2dotc2

 0.04   16   0.051    0.464
 0.04   32   0.050    0.624    

 0.06   16   0.055    0.624 
 0.06   32   0.054    0.743

awk、sedを使用してこれを達成するにはどうすればよいですか?

4

1 に答える 1

6

この awk スクリプトは、要件に合わせて機能します。

awk 'BEGIN{OFS="\t";h="A\tB"}
    NF==1{h=h OFS $0;next}
    {x=$2OFS$1;r[x]=!r[x]?$3:r[x]OFS$3}
    END{print h;n=asorti(r,d);for(i=1;i<=n;i++)print d[i],r[d[i]]}' file

あなたのデータでテストしてください:

kent$  cat file
sublat
16 0.04 0.051
32 0.04 0.050
16 0.06 0.055
32 0.06 0.054
c2dotc2
16 0.04 0.464
32 0.04 0.624
16 0.06 0.505 
32 0.06 0.743

kent$  awk 'BEGIN{OFS="\t";h="A\tB"}
        NF==1{h=h OFS $0;next}
        {x=$2OFS$1;r[x]=!r[x]?$3:r[x]OFS$3}
        END{print h;n=asorti(r,d);for(i=1;i<=n;i++)print d[i],r[d[i]]}' file
A       B       sublat  c2dotc2
0.04    16      0.051   0.464
0.04    32      0.050   0.624
0.06    16      0.055   0.505
0.06    32      0.054   0.743
于 2013-05-21T21:29:02.903 に答える