Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> LinuxシステムFAQ >> Linuxでのsort並べ替えコマンド

Linuxでのsort並べ替えコマンド

  

1 sortの働き

並べ替えは、ファイルの各行を1つの単位として比較し、それらを互いに比較します。それらを比較し、最後に昇順で出力します。

 [zookeeper @ master rh] $ cat seq.txtbananaapplepearorangepear [zookeeper @ master rh] $ sort seq.txt applebananaorangepearpear 

2 sort -uオプション

その役割はとても簡単です。出力行の重複行を削除するためです。

 [zookeeper @ master rh] $ sort -u seq.txt applebananaorangepear 

pearが-uオプションによって容赦なく削除されました。

3 sort -rオプション

 [zookeeper @ master rh] $ cat number.txt1357112461089 [zookeeper @ master rh] $ sort number.txt  - ソートデフォルトのソート方法は昇順です1101123456789 [zookeeper @ master rh] $ sort -n number.txt  - ソーターは最初に1と2を比較しますが、明らかに1は小さいので、21234567891011の前に10を入れます。 -rオプション$ sort -n -r number.txt --rは降順、nは番号によるソートを意味します。1110987654321 

4種類の-oオプション

sortはデフォルトで標準の結果を出力するので、出力されるので、sort filename> newfileのように、リダイレクトを使用して結果をファイルに書き込む必要があります。

ただし、ソート結果を元のファイルに出力したい場合は、リダイレクトを使用できません。

 [zookeeper @ master rh] $ sort -n -r number.txt> number.txt [zookeeper @ master rh] $ cat number.txt [zookeeper @ master rh] $ 

番号が消去されます。そのため、-oオプションを使用する必要があります。これにより、問題を元のファイルに安全に書き込むことができます。これはリダイレクトに対する-oの唯一の利点であるかもしれません。

 [zookeeper @ master rh] $ sort -n -r number.txt -o number.txt [zookeeper @ master rh] $ cat number.txt 1110987654321 

5種類の-tオプションと-kオプション

 [zookeeper @ master rh] $ cat facebook.txtbanana:30:5.5アップル:10:2.5ペア:90:2.3範囲:20:3.4 [zookeeper @マスターrh] $ sort -n -k 2 -t:facebook.txtapple:10:2.5orange:20:3.4banana:30:5.5 pear:90:2.3 

このファイルには3つの列があり、列はコロンで区切られています。最初の列はフルーツの種類を示しています。 2列目は果物の数を示し、3列目は果物の価格を示します。それから私は果物の数でソートしたいのですが、それは2番目のコラムでソートされています。幸いなことに、sortは-tオプションを提供します。これにスペーサーを続けることができます。 (カットアンドペーストの-dオプション、共振~~を覚えていません)

スペーサーを指定した後、-kを使用して列数を指定できます。コロンをスペーサーとして使用し、2列目の値を昇順に並べ替えます。結果は満足のいくものです。

6その他のソートによく使われるオプション

-fは、比較のために小文字を大文字に変換します。つまり、大文字と小文字を区別しません。順序が正しくない場合は、最初の順序が正しくない行の情報を出力し、最後に1を返します。順序が正しくない場合は、ファイルはソートされているかどうかがチェックされます。 JANがFEBより小さいなど、月ごとにソートされるのは1

-Mのみです。

-bは、最初の表示文字から始めて、各行の前の空白部分をすべて無視します。



Linuxでsortコマンドを並べ替える(2)


スクリプトを覚えていると、sortコマンドの後に似たようなものがたくさん並ぶことがあります。 -k1、2、または-k1.2 -k3.4のものはややばかげています。今日はそれを修正しましょう - mkash -kオプション!

1素材を準備します。

 [root @ FDMdevBI opt]#cat testsort.txt google 110 5000baidu 100 5000guge 50 3000sohu 100 4500 

最初のドメインは会社名、2番目のドメインはそれは会社の数であり、3番目は従業員の平均給与です。 (会社名、その他の文字に加えて、^ _ ^)

2このファイルを会社のアルファベット順、つまり最初のドメインの順に並べ替えます。(このfacebook) .txtファイルには3つのフィールドがあります)

 [root @ FDMdevBI opt]#sort -t '' -k 1 testsort.txt baidu 100 5000google 110 5000guge 50 3000sohu 100 4500 

表示して直接使用してください。 -k 1設定は大丈夫です。 (実際には、厳密ではありません。後でわかります)

3 facebook.txtを会社番号順に並べ替えます。 '' -k 2 testsort.txt guge 50 3000baidu 100 5000sohu 100 4500google 110 5000

ただし、ここで問題があります。つまり、baiduとsohuの会社数は同じです。どちらも100人です。この時点で何をすればよいですか。デフォルトの規則に従って、最初の順序は昇順にソートされているので、baiduはsohuの前にランク付けされます。

4 facebook.txtを会社番号でソートし、同じ人数を従業員の平均給与の昇順でソートします。

 [root @ FDMdevBI opt]#sort -n -t '' -k2 -k3 testsort.txt guge 50 3000sohu 100 4500baidu 100 5000google 110 5000 

この問題を解決するために-k2 -k3を追加しました。ドロップの場合、sortはこの設定をサポートします。つまり、ドメインのソートの優先順位を設定し、最初に2番目のドメインでソートし、同じ場合は3番目のドメインでソートします。

5 facebook.txtを従業員給与の降順で並べ替え、従業員数が同じ場合は会社番号の昇順で並べ替えます。 :(これは少し難しいです)

 [root @ FDMdevBI opt]#sort -n -t '' -k3r -k2 testsort.txt baidu 100 5000google 110 5000sohu 100 4500guge 50 3000 

ここで使われていますいくつかのヒントは、あなたがよく見ると、-k 3の後に小文字のrをひそかに追加しました。私たちの前の記事と組み合わせて、それについて考えてください、あなたは答えを得ることができますか?明らかにされた:rと-rオプションの役割は同じ、すなわち逆の順序である。ソートはデフォルトで昇順にソートされるので、3番目のフィールド(平均従業員給与)が降順にソートされることを示すために、ここにrが追加されます。ここでnを追加することもできます。つまり、このフィールドを並べ替えるときは、数値で並べ替える必要があります。例:

 [root @ FDMdevBI opt]#sort -t '' -k3rn -k2n testsort.txt baidu 100 5000google 110 5000sohu 100 4500guge 50 3000 

最初の-nオプションを削除し、すべての-kオプションに追加しました。

6-kオプションの具体的な構文

さらに深く進み続けるためには、理論的な知識が必要です。次のように-kオプションの構文を理解する必要があります。

[FStart [.CStart]] [修飾子] [、[FEnd [.CEnd]] [修飾子]]

この構文形式これは、コンマ('、')によって開始部分と終了部分の2つの部分に分けられます。

最初に、「終わりの部分を設定していない場合は、終わりは行の終わりに設定されていると思います」という考えをあなたに伝えます。この概念は重要ですが、多くの場合それを重んじることはありません。

Startセクションも3つの部分から構成されています。そのうちのModifier部分は、前述のnとrに似たオプションの一部です。スタートセクションのFStartとC.Startに注目しましょう。

C.Startも省略できます省略した場合は、このフィールドの先頭から開始します。前の例の-k 2と-k 3は、C.Startを省略した例です。

FStart.CStart。ここで、FStartは使用されているドメイン、CStartは最初の文字からFStartフィールドの最初の文字です。

同様に、EndセクションでFEnd.CEndを設定することができます。また、CEndを0(ゼロ)に設定した場合は、[フィールドの終わり]までの終了も意味します。

7気まぐれな、会社の英語名の2番目の文字からソート:

Copyright © Windowsの知識 All Rights Reserved