次の出力の最後の3つの日付を印刷するには:
User;month/day/year
user1:01/01/2015
user1:01/01/2015
user1:01/01/2015
...
user1:01/09/2018
user1:01/08/2018
user1:01/07/2018
user1:01/04/2016
user1:01/02/2016
user1:01/01/2016
この場合(2018年基準)
編集する:
次のawkコマンドがあります。
awk '{ print $1":" substr( $0,285,291 )}' $file_input | awk '{ print $1}' | sort -n -r
希望の出力:
user1:01/09/2018
user1:01/08/2018
user1:01/07/2018
答え1
ここではYYYY
、部品が最初に並べ替えられ、次にmm/dd
語彙ごとに整列されます。
これは、それぞれ2番目の区切り文字フィールドの文字7〜10と文字1〜5です。したがって、次のようになります。:
<file sort -r -b -t: -k2.7,2.10 -k 2.1,2.5 | head -n 3
(-b
周囲のスペースを許可(および無視)するには、ここに1つを追加してください:
)
答え2
次のソートを試してください。
sort -rt/ -k3n -k1.11n -k2n < input | head -3
これにより、3つの主要なフィールドと区切り文字に基づいて/
行がソートされます。最初の年、月(フィールド1、ユーザー名とコロンをスキップ)、フィールド2 - すべてが数値順に並べ替えられます。tail -3
最後(最近)の3行/日付のみを出力します。