年、月、日付で出力を並べ替える

年、月、日付で出力を並べ替える

以下の出力を年、月、日付でソートしたいと思います。私は動作しないようないくつかの組み合わせを試しました。

下の出力では、2番目の列は日付、3番目の列は月、4番目の列は年です。

sort次の方法でコマンドを適用しようとします。

sort -nk2 -Mk3 -nk4

しかし、エラーが発生して動作しません。

sort: options '-Mn' are incompatible

これは私のサンプルデータファイルです。

adcblz01 14 Mar 2018  
adcblz03 23 Nov 2018  
aktestlb02 26 Aug 2019    
ckicbrwlz1 23 Mar 2018   
ckilabbrwlb1 23 Mar 2018   
bhuiflz28 09 Mar 2017  
bhuiflz47 09 Mar 2017  
bhuiflz48 09 Mar 2017  
olkeflb24 23 Jul 2019  
olkeflz46t2 09 Mar 2017  
rrjugflb7 03 Jul 2019

ベストアンサー1

ほぼ同じですが、両方のレベルでソート操作の順序が間違っています。

  1. 年(フィールド4)、月(フィールド3)、最後に日(フィールド2)でソートする必要があります。
  2. グローバルではないキーにのみソート修飾子(nおよび)を適用する必要があります。M

結果のソートコマンドは次のとおりです。

sort -k4n -k3M -k2n

sort: options '-Mn' are incompatible元のコマンドでエラーが発生する理由がわからない場合は、sort -nk2 -Mk3 -nk4オプションが主に左から右に解析されるためです。実際にあなたが書いたsort -n -k2 -M -k3 -n -k4。これで、キー固有の修飾子の代わりにフラグ-nと修飾子をグローバルジョブとして指定することを簡単に確認できます。-M

おすすめ記事