日付列が1ヶ月未満のファイルのすべてのレコードを取得する

日付列が1ヶ月未満のファイルのすべてのレコードを取得する

入力ファイル

ID,Name,join_date
21433432,rds,2014_02_01
2131321,ABCDS,2014-10-20
2432745314,ASRER, 2015-01-20
2132432423,safdsad, 2015-12-30

2つのファイルを生成する必要があります。 1つは、日付列が1ヶ月未満、6ヶ月未満のレコード用です。

出力ファイル1は1ヶ月未満です。

ID,name,join_date
2432745314,ASRER, 2015-01-20
2132432423,safdsad, 2015-12-30

出力ファイル2が6ヶ月未満です。

2131321,ABCDS,2014-10-20

コマンドを使用しましたがawk機能しませんでした。

ベストアンサー1

これは始めるのに役立ちます。時間関数を実装するにはGNU awkが必要です。

gawk -F, '
    function totime(ymd) {gsub(/[-_]/," ",ymd); return mktime(ymd " 0 0 0")}
    BEGIN {now = systime(); m1 = now - 86400 * 30; m6 = now - 86400 * 180}
    FNR == 1 {next}
    {t = totime($3)}
    t > m1 {print "m1", $0; next}
    t > m6 {print "m6", $0}
' file
m6 2131321,ABCDS,2014-10-20
m1 2432745314,ASRER, 2015-01-20
m1 2132432423,safdsad, 2015-12-30

正確に1ヶ月6ヶ月ではなく、30日180日、夏時間の切り替えによる1時間プラスマイナス1時間

おすすめ記事