このリストを名前、高温、低温でソートする必要があります。
Kuala Lumpur 78 56
Seoul 85 66
Karachi 95 75
Tokyo 85 60
Lahore 85 75
Manila 90 85
空白は列の区切り記号なので、
sort -k 1
次のように与えることができると思いました。
Karachi 95 75
Kuala Lumpur 78 56
Lahore 85 75
Manila 90 85
Seoul 85 66
Tokyo 85 60
しかし、「クアラルンプール」は空間問題で問題を起こした。
それで、「Lumpur」を列として扱い、最初の数値セットをソートしてみました。
sort -k 3n
しかし、私はそれを理解します:
Tokyo 85 60
Seoul 85 66
Karachi 95 75
Lahore 85 75
Kuala Lumpur 78 56 <---Why is this out of order?
Manila 90 85
この空間で何をしますか?
ベストアンサー1
他の人の意見のように、カンマ区切り値(CSV)であれば、データ操作が簡単になります。
データをCSVに変換するソリューションは次のとおりです。
$ cat file | sed 's/ \([0-9]\)/,\1/g'
Kuala Lumpur,78,56
Seoul,85,66
Karachi,95,75
Tokyo,85,60
Lahore,85,75
Manila,90,85
数字の前のスペースはカンマで置き換えられます。\1
参照グループ([0-9])、つまりスペースの後の数字。ここでは、sort
パラメーターを使用してフィールド区切り-t
文字を指定できます。
$ cat file | sed 's/ \([0-9]\)/,\1/g' | sort -t, -k2
Kuala Lumpur,78,56
Tokyo,85,60
Seoul,85,66
Lahore,85,75
Manila,90,85
Karachi,95,75
空白に変換したりテーブルを作成したりするには、次の2つの例を参照してください。
$ cat test | sed 's/ \([0-9]\)/,\1/g' | sort -t, -k2 | tr , ' '
Kuala Lumpur 78 56
Tokyo 85 60
Seoul 85 66
Lahore 85 75
Manila 90 85
Karachi 95 75
$ cat test | sed 's/ \([0-9]\)/,\1/g' | sort -t, -k2 | column -s, -t
Kuala Lumpur 78 56
Tokyo 85 60
Seoul 85 66
Lahore 85 75
Manila 90 85
Karachi 95 75