私はbashとその構文に最初に触れたので、ハードドライブの全在庫数を取得するためにリストをソートする方法を知りたいです。
例は次のとおりです。私たちはさまざまなベンダーやモデルの多くのサーバーとハードドライブを持っています。
名前の出現ではない数字に基づいてどのように一緒に数えますか?
ST8000NC0002: 8
ST900MM0168: 1
ST900MM0168: 1
ST9300603SS: 3
ST9300605SS: 4
ST9500620SS: 3
WD1003FBYX: 7
WD1500HLFS: 4
WD9001BKHG: 3
WD9001BKHG: 3
WD9001BKHG: 4
WD9001BKHG: 4
希望の出力:
ST8000NC0002: 8
ST900MM0168: 2
ST9300603SS: 3
ST9300605SS: 4
ST9500620SS: 3
WD1003FBYX: 7
WD1500HLFS: 4
WD9001BKHG: 14
ベストアンサー1
awk
まさにこれのためです。data
最初のフィールド()でインデックス付けされた配列()を埋め、2番目のフィールド()の値を$1
累積します。$2
配列を埋めた後、単純なfor
ループを使用してデータを出力します。便宜上、出力はパイプで接続されていますsort
。
awk '{data[$1]+=$2} END { for( d in data ) { print d, data[d] } }' input | sort
ST8000NC0002: 8
ST900MM0168: 2
ST9300603SS: 3
ST9300605SS: 4
ST9500620SS: 3
WD1003FBYX: 7
WD1500HLFS: 4
WD9001BKHG: 14