2つの日付/時刻形式で列を並べ替える

2つの日付/時刻形式で列を並べ替える

2つの異なる形式の日付を含む日付列を持つタブ区切りファイルがあります。このソートコマンドを使用して1つの型タイプ( "%a%b%d%H:%M:%S%Z%Y")でソートしていますが、日付列でソートする方法はありますか?滞在?ありがとうございます!

入力する

date
Mon Mar 02 03:56:26 UTC 2020
2020-03-03 15:46:52

sort -t$'\t' -k 3.25,3.28n -k 3.5,3.7M -k 3.9,3.10n -k 3.12,3.13n -k 3.15,3.16n -k3.18,3.19n sample.csv

ベストアンサー1

両方の形式を明確な時間(たとえば、エポック時間)に変換して並べ替え、削除できます。例えばミラー

mlr --tsv put '
  $epoch = ($date =~ "^[A-Z][a-z][a-z]") ? strptime($date,"%a %b %d %H:%M:%S %Z %Y") : strptime($date,"%Y-%m-%d %H:%M:%S")
' then sort -n epoch then cut -f date input

おすすめ記事