簡體   English   中英

將特定行轉換為列

[英]Transposing specific rows to columns

我有數百萬行。 我想編寫簡單的bash腳本以獲取一些信息。

                            Name:                 1FJ
                        HA_RMSDs:          -1000.0000
                        HA_RMSDh:          -1000.0000
                        HA_RMSDm:              0.0000
                      Grid_Score:          -24.958729
                 Grid_vdw_energy:          -24.958729
                  Grid_es_energy:            0.000000
       Internal_energy_repulsive:            5.894002
                            Name:       ZINC103990867
                        HA_RMSDs:          -1000.0000
                        HA_RMSDh:          -1000.0000
                        HA_RMSDm:              0.0000
                      Grid_Score:          -22.196136
                 Grid_vdw_energy:          -17.917459
                  Grid_es_energy:           -4.278677
       Internal_energy_repulsive:           14.832469

我想要這樣

Name            Grid_Score
ZINC103990867   -22.196136
1FJ             -24.958729

我找到了一些解決方案,但我做不到。

任何幫助都是非常可觀的。

如果您需要更復雜的格式,Awk會提供一條printf()語句。

% awk 'BEGIN{print "Name","Grid_Score"}$1=="Name:"{name=$2}$1=="Grid_Score:"{print name,$2}' inputfile.txt

當您在輸入中具有名稱到值的映射時,通常最好首先創建一個包含這些映射的數組,然后僅按其名稱打印值:

$ cat tst.awk
{ sub(/:/,"") }

NR==1 { key=$1 }
$1==key { prt() }
{ f[$1] = $2 }
END { prt() }

function prt(   i) {
    if (NR==1) {
        numCols = split(c,cols,/,/)
        for (i=1; i<=numCols; i++) {
            printf "%s%s", cols[i], (i<numCols?OFS:ORS)
        }
    }
    else {
        for (i=1; i<=numCols; i++) {
            printf "%s%s", f[cols[i]], (i<numCols?OFS:ORS)
        }
    }
}

$ awk -v c='Name,Grid_Score' -f tst.awk file | column -t
Name           Grid_Score
1FJ            -24.958729
ZINC103990867  -22.196136

$ awk -v c='Name,Grid_Score,HA_RMSDs,Grid_es_energy' -f tst.awk file | column -t
Name           Grid_Score  HA_RMSDs    Grid_es_energy
1FJ            -24.958729  -1000.0000  0.000000
ZINC103990867  -22.196136  -1000.0000  -4.278677

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM