古いタイムスタンプのあるログ行を所定の位置から削除する

古いタイムスタンプのあるログ行を所定の位置から削除する

さようなら行ってください。ログファイルがありますが、30日後の行を削除したいと思います。

文書の内容:

2017/04/04 15:53:22 [11487] building file list
2017/04/04 15:53:22 [11487] done
2017/04/04 15:53:22 [11487] sent 163 bytes  received 12 bytes  350.00 bytes/sec
2017/04/04 15:53:22 [11487] total size is 48640  speedup is 277.94
2017/04/04 15:53:29 [11493] building file list
2017/04/04 15:53:29 [11493] done

awkを試しましたが、ファイルでインライン編集を実行できませんでした。 v 3.7.0のみがあるため、gawkをソリューションとして使用することはできません。誰かがsedに役立つことを願っています。ライナーを探すことをお勧めします。これはbashにあります。

ベストアンサー1

1日に少なくとも1つの項目があると確信できる場合は、次のように言うことができます。

sed -n '\|'$(date +'%Y/%m/%d' -d '30 days ago')'|,$p' log

前提はGNUがあるということですsed。そうでない場合は、日付からスラッシュをエスケープする必要があります。

おすすめ記事