2016-05-04 3 views
2

私はLinuxのシェルコマンドを初めて使用しています。私はsortコマンドを学習しています。sort -uは重複行を削除できません

入力ファイルは以下の通りです:

a 1 
b 2 
a 0 

それは同じを持っているので、私は、ソートのキーとして最初の列を作り、ライン「0」を削除するには「-u」オプションを使用したいですキーを最初の行に置き、コマンドマニュアルに「-u」と指定すると、最初の行だけが保持されます。

私はコマンドsort -k 1 -u textを使用すると、結果は次のとおりです。

a 0 
a 1 
b 0 

そして、私はコマンドsort -k 1, 1 -u textを使用する場合ただし、出力は次のとおりです。

a 1 
b 2 

誰がどのような違いを教えてもらえます2つのコマンドの間には?

答えて

2
-k 1 

は、フィールド1から行末までソートされます。

-k 1,1 

は、最初のフィールドのみでソートされます。停止位置を定義しました。

これが異なる出力を得た理由です。

ソートのmanページのKEYDEFを読んでください。

2

-kオプションは、キーを[位取り]のフィールドとして設定しています。従って、-k1は、デフォルトであるレコード全体を定義しているので、説明的ではありません(実際には役に立たない)。 -k1,1を設定すると、最初のフィールドだけをキーとして使用するソートが求められます。その結果、望ましい結果が得られます。

関連する問題