7日後のcsvファイルの行を削除する

7日後のcsvファイルの行を削除する

CSVがあり、7日より古いすべての行を削除する必要があります。これはcsv形式です。

個人ID VIP CS SS LT FTLT PS修正日スタンプ
T001028 1 1 1 0 0 0 05-07-2013
T001250 1 1 1 0 0 0 08-05-2012
T001261 1 1 1 0 0 1 2013年4月4日
T001345 1 1 1 0 0 0 2013年4月3日
T078503 1 1 1 0 0 0 04-03-2013
T079819 1 1 1 0 0 1 2013年3月22日
T080119 1 1 1 0 0 1 2013年4月2日
T090574 1 1 1 0 0 0 2012年11月15日
T091106 1 1 1 0 0 1 2013年3月22日

変更された日付列の形式はMM / DD / YYYYです。どんなアイデアでも良いです。 RedHat 5 Linuxシステムでタスクを実行しようとしています。

ベストアンサー1

taildate -d ...awkおよびBash機能を使用する方法は次のとおりです。

tail -n+2 file.csv | {
  while read line ; do
    tmstmp=$(echo "$line" | awk '{print $8}');
    [ $(( $(date -d "now" +%s) - $(date -d "$tmstmp" +%s) )) -lt $(( 60*60*24*7 )) ] && echo "$line";
  done;
}

どのように動作しますか?

上記のコードはファイルの行を解析し、file.csv8番目の列(日付)を取得し、エポック以降の秒数と解析された日付の間のデルタを計算します。 7日秒未満の場合、行は印刷されます。

デバッグ

何が起こっているのかをデバッグするためにこの行を置くことができます。tmpstmp=...次の行の後に入れてください。

echo "TMSTMP: $tmstmp" "TMDELTA: $(( $(date -d "now" +%s) - $(date -d "$tmstmp" +%s) ))" "TMWINDOW: $(( 60*60*24*7 ))"

はい

簡単にするために、上記の内容をスクリプトに入れて名前を付けましたrprttime.bash

#!/bin/bash

tail -n+2 file.csv | {
  while read line ; do
    tmstmp=$(echo "$line" | awk '{print $8}');
    echo "TMSTMP: $tmstmp" "TMDELTA: $(( $(date -d "now" +%s) - $(date -d "$tmstmp" +%s) ))" "TMWINDOW: $(( 60*60*24*7 ))"
    [ $(( $(date -d "now" +%s) - $(date -d "$tmstmp" +%s) )) -lt $(( 60*60*24*7 )) ] && echo "$line";
  done;
}

今実行すると:

$ ./rprttime.bash
TMSTMP: 05/07/2013 TMDELTA: 5157421 TMWINDOW: 604800
TMSTMP: 08/05/2012 TMDELTA: 28917421 TMWINDOW: 604800
TMSTMP: 04/04/2013 TMDELTA: 8008621 TMWINDOW: 604800
TMSTMP: 04/03/2013 TMDELTA: 8095021 TMWINDOW: 604800
TMSTMP: 04/03/2013 TMDELTA: 8095021 TMWINDOW: 604800
TMSTMP: 3/22/2013 TMDELTA: 9131821 TMWINDOW: 604800
TMSTMP: 04/02/2013 TMDELTA: 8181421 TMWINDOW: 604800
TMSTMP: 11/15/2012 TMDELTA: 20101021 TMWINDOW: 604800
TMSTMP: 3/22/2013 TMDELTA: 9131821 TMWINDOW: 604800

期間を7日から60日に変更してデバッグ行を無効にすると、次の行が印刷されることがわかります。

$ date
Fri Jul  5 16:49:19 EDT 2013

$ ./rprttime.bash
T001028    1    1   1   0   0     0   05/07/2013

おすすめ記事