特定の日付より古いファイルの行を保持

特定の日付より古いファイルの行を保持

次のファイルがあります(これはすべてのスナップショットを一覧表示する出力であると思われるかもしれませんzfs list)。

zpzetta/sys/win2012@zfs-auto-snap_daily-2021-03-01-0525   Mon Mar  1  5:25 2021
zpzetta/sys/win2012@zfs-auto-snap_monthly-2021-03-01-0552 Mon Mar  1  5:52 2021
zpzetta/sys/win2012@zfs-auto-snap_daily-2021-03-02-0525   Tue Mar  2  5:25 2021
zpzetta/sys/win2012@zfs-auto-snap_hourly-2021-03-02-2117  Tue Mar  2 21:17 2021
zpzetta/sys/win2012@zfs-auto-snap_hourly-2021-03-02-2217  Tue Mar  2 22:17 2021
zpzetta/sys/win2012@zfs-auto-snap_hourly-2021-03-02-2317  Tue Mar  2 23:17 2021
zpzetta/sys/win2012@zfs-auto-snap_hourly-2021-03-03-0017  Wed Mar  3  0:17 2021
zpzetta/sys/win2012@zfs-auto-snap_hourly-2021-03-03-0117  Wed Mar  3  1:17 2021
zpzetta/sys/win2012@zfs-auto-snap_hourly-2021-03-03-0217  Wed Mar  3  2:17 2021
zpzetta/sys/win2012@zfs-auto-snap_hourly-2021-03-03-0317  Wed Mar  3  3:17 2021
zpzetta/sys/win2012@zfs-auto-snap_hourly-2021-03-03-0417  Wed Mar  3  4:17 2021

特定の日付より古いスナップショット(行の維持)を削除したいです。たとえば、3月3日より古いものをすべて削除したいとします。

私は次のことができることを知っています。

ts=`...` # put in time stamp to compare here
for line in `zfs list -H -rt snap -o name,creation zpzetta`
do
  date=`echo $line | awk '{print $2,$3,$4,$5,$6,$7,$8}'`
  secs=`date --date='$date' +'%s'`
  if [ "$secs" -lt $ts ]
  then
    echo $line
  fi
done

しかし、私が見るには汚れているようです。

これを行うためのよりエレガントな方法はありませんか? (シェルスクリプトにはPython、Perlなどはありません。)

ベストアンサー1

私はこれが可能だと思います。日付を比較せずに、省略時の月名と日付と年の数を活用します。

$ sed -n '/Mar *[3-9].*2021\|Mar *[1-3][0-9].*2021$/p' foo.foo 
zpzetta/sys/win2012@zfs-auto-snap_hourly-2021-03-03-0017  Wed Mar  3  0:17 2021
zpzetta/sys/win2012@zfs-auto-snap_hourly-2021-03-03-0117  Wed Mar  3  1:17 2021
zpzetta/sys/win2012@zfs-auto-snap_hourly-2021-03-03-0217  Wed Mar  3  2:17 2021
zpzetta/sys/win2012@zfs-auto-snap_hourly-2021-03-03-0317  Wed Mar  3  3:17 2021
zpzetta/sys/win2012@zfs-auto-snap_hourly-2021-03-03-0417  Wed Mar  3  4:17 2021

追加のパラメータが必要な場合は、モードを変更できます。たとえば、2020年11月4日より古い行を検索します。

sed-n'/十一月*[4-9].*2020\|十一月*[1-3][0-9].*2020$/p' foo.foo 

おすすめ記事