私はunixソートを使用して、複数の列を持つコンマ区切りファイルをソートしています。これまでのところ、これはデータを数値順またはアルファベット順で並べ替えるのに最適です。
並べ替え前のファイルの例:
C,United States,WA,Tacoma,f,1
A,United States,MA,Boston,f,0
B,United States,NY,New York,f,5
A,Canada,QC,Montreal,f,2
A,Bahamas,Bahamas,Nassau,f,2
A,United States,NY,New York,f,1
ファイルを並べ替えます。 $ sort -t ',' -k 2,2 -k 3,3 -k 4,4 -k 5,5r -k 6,6nr tmp.csv
ソートされた結果:
A,Bahamas,Bahamas,Nassau,f,2
A,Canada,QC,Montreal,f,2
A,United States,MA,Boston,f,0
B,United States,NY,New York,f,5
A,United States,NY,New York,f,1
C,United States,WA,Tacoma,f,1
ここに問題があります:カスタムソートに基づいて列2を並べ替えます。つまり、最初に米国、次にカナダ、次にバハマが必要です。
望ましいソート:
A,United States,MA,Boston,f,0
B,United States,NY,New York,f,5
A,United States,NY,New York,f,1
C,United States,WA,Tacoma,f,1
A,Canada,QC,Montreal,f,2
A,Bahamas,Bahamas,Nassau,f,2
unix sortに適用できるカスタムの並べ替え順序を渡す方法はありますか?何かのようなもの:
$ sort -t ',' -k 2,2:'United States, Canada, Bahamas' -k 3,3 -k 4,4 -k 5,5r -k 6,6nr tmp.csv
ありがとう!
t
でf
は、最後の行の代わりにあるべきではありませんか?
join
コマンドの1つはコマンドですが、多くの並べ替えが行われる可能性があります。入力ファイルjoin
は1つの順序で並べ替える必要があります。その後、sort
再度使用してデータを入れます。別の順序(および並べ替え後の手順として並べ替え順序列が失われる)。