日付列が今日からx日未満の行を表示する方法

日付列が今日からx日未満の行を表示する方法

私のプロフィール

ID=29524 02/12/2015,23:59:34,'PAt, 0,
ID=29628 02/12/2015,23:59:37,'PAb, 1.9,
ID=30816 03/12/2015,00:00:20,'PAc, 4.15,

今日よりもX日古いファイルを印刷したいです。

私の試みは次のとおりです。

cat response.txt | awk -v start=$(date -d "-5 days" +%d/%m/%Y) -F" " '{split($2, a, /\//)} (a[3] a[1] a[2] <start)'| cut -d, -f1

ベストアンサー1

今日よりX日少ないとすると、「5日より古い」ファイルを意味すると仮定します。正確に5日間のファイルを意味する場合は、以下のスクリプトを変更して最も可能性の高いタイムスタンプを削除し、-ltを-eqに置き換えることができます。

#!/bin/bash

CUTOFF=$(date +%s -d "5 days ago")

while read p; do
   time=$(echo $p | awk -F'[ ,]' '{print $2" "$3}')
   epoch_time=$(date --date="$time" +%s) 

   if [ $epoch_time -lt $CUTOFF ]; then
   echo $p
   fi;
done <response.txt

上記のコードはresponse.txtをロードし、ファイルの各行を繰り返します。 awkはスペースとカンマで別々の列に解析し、日付と時刻を印刷します。その後(おそらく同じ行で実行できます)、日付/時刻を秒単位のエポック時間に変換します。次に、ifステートメントを使用して期限(秒単位)をファイル時間と比較します。

上記はファイルのみを印刷します。5日以上

おすすめ記事