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

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

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

下の出力では、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

答え2

あなたは以下を探しているかもしれません:

$ sort -k4n -k3M -k2n

出力:

bhuiflz28 2017年3月9日
bhuiflz47 2017年3月9日
bhuiflz48 2017年3月9日
olkeflz46t2 2017年3月9日
adcblz01 2018年3月14日
ckicbrwlz1 2018年3月23日
ckilabrwlb1 2018年3月23日
adcblz03 2018年11月23日
rrjugflb7 2019年7月3日
olkeflb24 2019年7月23日
aktestlb02 2019年8月26日

関連情報