2

最初の2列で大きな(10MB)ファイルを並べ替えようとしています。ファイルはASCII241(±)で区切られます。問題は、最初の2つのデータフィールドを正しく並べ替えた後、-sオプションが含まれているかどうかに関係なく、unixが残りの行で並べ替えを続けることです。

指示 :sort -k1bn -k2n -s -t$'\xF1' -o sorted_file file_to_sort

サンプルデータ:(かなりソートされているので、問題を強調できます)

   6033718±2±    0±20817742
   6033718±3±20817742      
   6033718±3±20862761      
   6033718±3±SRDV408BC     
   6033718±3±KFT474        
   6033718±3±941764        
   6033718±4±20817742      
   6033718±4±20862761      
   6033718±4±SRDV408BC     
   6033718±4±KFT474        
   6033718±4±941764        
   6033718±5±21501-0-06   ±D13 * TIMING
   6033718±5±17003-0-01   ±VEHICLE OPER
   6033718±6±21501-0-06   ±10  ±0±     
   6033718±6±17003-0-01   ±10  ±0±     
   6033718±9±I± === Applicable Coverage
   6033718±9±I±Volvo D11/13/16 / TIMING
   6033718±9±E±check for oil leak, insp

コマンドを実行すると、次のようになります。

   6033718±2±    0±20817742            
   6033718±3±20817742                  
   6033718±3±20862761                  
   6033718±3±941764                    
   6033718±3±KFT474                    
   6033718±3±SRDV408BC                 
   6033718±4±20817742                  
   6033718±4±20862761                  
   6033718±4±941764                    
   6033718±4±KFT474                    
   6033718±4±SRDV408BC                 
   6033718±5±17003-0-01   ±VEHICLE OPER
   6033718±5±21501-0-06   ±D13 * TIMING
   6033718±6±17003-0-01   ±10  ±0±     
   6033718±6±21501-0-06   ±10  ±0±     
   6033718±9±E±check for oil leak, insp
   6033718±9±I± === Applicable Coverage
   6033718±9±I±Volvo D11/13/16 / TIMING

ご覧のとおり、「3」、「4」、「9」のレコードを見ると、2番目のフィールドに続くデータは並べ替えられていますが、並べ替えのマニュアルには、-sオプションを使用すると残りのデータの並べ替えができないと記載されています。キーが使い果たされた後の行。

ここでどこが間違っているのですか?

ところで、それは小さなファイルでうまくいくようです。

4

1 に答える 1

0

ソートキーはとして指定され-k <start>[,<end>]ます。指定されていない場合<end>、使用されるキーは<start>行の先頭から末尾までであり、多少直感的ではありません。あなたはおそらくこのようなものが欲しいでしょう:

sort -k1,1bn -k2,2n -s -t$'\xF1' -o sorted_file file_to_sort

これらのキーは、デフォルトの「...から始まり、行の終わりまでのすべてのフィールド」ではなく、単一のフィールドを指定することに注意してください。

于 2012-10-10T18:43:12.660 に答える