3番目の列の最新の日付に基づいて単一のレコードをインポートする必要があります。

3番目の列の最新の日付に基づいて単一のレコードをインポートする必要があります。

最初の列の各値に対して1つのレコードを取得したいと思います。以下の3つのレコードの最新の日付値は2019-10-20です。この場合、最初に3行をインポートし、最後の列の最新の日付である2019-を取得します。 10-14 だから我々はそのレコードを出力として得る。

入力する:

150098517|000000601706|2019-10-19|2019-10-10|1265457733|2019-01-13
150098517|000000635671|2019-10-20|2019-10-20|1265457733|2019-01-13
150098517|000000637002|2019-10-20|2019-10-19|1265457733|2019-01-14
150098517|000000645047|2019-10-20|2019-10-18|1265457733|2019-01-12
150096747|000000645048|2019-10-17|2019-10-17|1265457733|2019-01-13
150098555|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13
150098554|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13
150098523|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13
150098523|000000645194|2019-10-14|2019-10-16|1265457733|2019-01-13

出力:

150098517|000000637002|2019-10-20|2019-10-19|1265457733|2019-01-14
150096747|000000645048|2019-10-17|2019-10-17|1265457733|2019-01-13
150098555|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13
150098554|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13
150098523|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13

ありがとう、アフメド

ベストアンサー1

データが次のファイルにあるとしますfile

$ sort -t '|' -k3,3r -k6,6r file | sort -t '|' -u -k1,1
150096747|000000645048|2019-10-17|2019-10-17|1265457733|2019-01-13
150098517|000000637002|2019-10-20|2019-10-19|1265457733|2019-01-14
150098523|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13
150098554|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13
150098555|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13

3番目に区切られたフィールドのデータを逆順にソートすることから始めます|(最も最近の日付から)。日付が同じ場合、6番目のフィールドがソートに使用されます。

最初の呼び出しの中間結果はsort次のとおりです。

150098517|000000637002|2019-10-20|2019-10-19|1265457733|2019-01-14
150098517|000000635671|2019-10-20|2019-10-20|1265457733|2019-01-13
150098517|000000645047|2019-10-20|2019-10-18|1265457733|2019-01-12
150098517|000000601706|2019-10-19|2019-10-10|1265457733|2019-01-13
150098523|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13
150098554|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13
150098555|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13
150096747|000000645048|2019-10-17|2019-10-17|1265457733|2019-01-13
150098523|000000645194|2019-10-14|2019-10-16|1265457733|2019-01-13

結果は最初のフィールドでソートされ、最初のフィールドで重複した行は削除されます。 2番目のソートに入るデータは3番目と6番目のフィールドの日付に基づいてソートされるため、重複して削除された行の日付は速くなります。

おすすめ記事