web-dev-qa-db-ja.com

UNIXツールと複数の列を使用した並べ替え

この問題を解決する最も簡単な方法を探しています。このタイプのフォーマットのExcelにロードできない巨大なデータセットがあります

This is a sentence|10
This is another sentence|5
This is the last sentence|20

私がしたいことは、数に基づいてこれを最小から最大に並べ替えることです。

cat MyDataSet.txt | tr "|" "\t" | ???

これを行うための最良の方法がわからないので、awkを使用して列を切り替え、並べ替えを行うことを考えていましたが、うまく実行できませんでした。

助けてください

26
josephmisiti
sort -t\| -k +2n dataset.txt

それを行う必要があります。フィールドセパレータと代替キーの選択

35
Seth Robertson

通常、ファイルをフィルターに送るのに猫は必要ありません。つまり、sortフィルターを使用できます。

sort -t "|" -k 2 -n MyDataSet.txt

これは、|を使用してMyDataSet.txtファイルをソートします。フィールド区切り文字としての文字、および2番目のフィールド(数値)に従って数値で並べ替え。

13
Javier C

並べ替えてみましたか-n

$ sort -n inputFile
This is another sentence|5
This is a sentence|10
This is the last sentence|20

あなたはawkでも列を切り替えることができます

$ awk -F"|" '{print $2"|"$1}' inputFile
10|This is a sentence
5|This is another sentence
20|This is the last sentence

awkとsortの組み合わせ:

$ awk -F"|" '{print $2"|"$1}' inputFile | sort -n
5|This is another sentence
10|This is a sentence
20|This is the last sentence

コメントごと

文に数字がある場合

$ sort -n -t"|" -k2 inputFile
This is another sentence|5
This is a sentence|10
This is the last sentence|20
this is a sentence with a number in it 2|22

もちろん、新しいファイルにリダイレクトすることもできます。

$ awk -F"|" '{print $2"|"$1}' inputFile | sort -n > outFile
7
matchew

次の並べ替えコマンドを試してください:

sort -n -t '|' -k2 file.txt
3
anubhava

番号で並べ替え、区切り記号を変更し、並べ替えを使用して2番目のグループを取得します。

sort -n -t'|' -k2 dataset.txt
2
zellio