awkヘッダー行を除外

awkヘッダー行を除外

次の出力があります。

Course: StudentCount
    ('BCA_27', 2L)
    ('MCA_34', 15L)
    ('BBA_26', 3L)
    ('BBM_02', 14L)
    ('MBA_23', 13L)

不要な文字を削除するには、次のコマンドを使用しています。

<output> |sed "s/['()]//g;s/,/:/g;s/\([0-9]\)L[ ]*$/\1/g;"|awk '{print $NF,$0}' | sort -nr | cut -f2- -d' '

これで出力は次のようになります。

MCA_34 : 15
BBM_02 : 14
MBA_23 : 13
BBA_26 : 3
BCA_27 : 2
Course : StudentCount

awk出力が次のようにヘッダー行を除外するのをどのように防ぐべきですか?

Course : StudentCount
MCA_34 : 15
BBM_02 : 14
MBA_23 : 13
BBA_26 : 3
BCA_27 : 2

ベストアンサー1

awkを使用すると、sedは必要ありません。

$ awk -F"[',: ]+" -v OFS=' : ' '{print (NR>1) "\t" (NR==1 ? $1 OFS $2 : $3 OFS $4+0)}' file |
    sort -k1,1n -k4,4nr | cut -f2-
Course : StudentCount
MCA_34 : 15
BBM_02 : 14
MBA_23 : 13
BBA_26 : 3
BCA_27 : 2

おすすめ記事