以下の出力を年、月、日付でソートしたいと思います。私は動作しないようないくつかの組み合わせを試しました。
下の出力では、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
ほぼ同じですが、両方のレベルでソート操作の順序が間違っています。
- 年(フィールド4)、月(フィールド3)、最後に日(フィールド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日