grep 抽出番号範囲

grep 抽出番号範囲

私はデートを探していますが、2019-09-XXどういうわけか2019-10-XX私のgrepは役に立ちません。ここで何かを逃しているようです。

  Last Password Change: 2019-10-30
  Last Password Change: 2017-02-07
  Last Password Change: 2019-10-29
  Last Password Change: 2019-11-03
  Last Password Change: 2019-10-31
  Last Password Change: 2018-09-27
  Last Password Change: 2018-09-27
  Last Password Change: 2019-06-27

次のことをしていますが、動作しません

grep "2019\-[09,10]\-" file また試みgrep "2019\-{09,10}\-" file

答え1

「代替」正規表現タグが「|これまたはそれ」を意味するようにします。

grep -E '2019-(09|10)-' file

バラより私の正規表現がXでは動作しますが、Yでは動作しないのはなぜですか?正規表現タグと正規表現クラス(基本、拡張など)の背景知識。

答え2

grep数字をうまく扱えず、算術比較をする方法がわかりません。これを行うには、awkやPerlなどを使用できます。09合計を一覧表示するのは簡単なので、ここではあまり重要ではありませんが、10範囲が97から123の場合、さらに悪化します。

たとえば、年、月、日を数値として選択し、日付が 27 ~ 31 の行を印刷します。

perl -ne 'print if /Last Password Change: ([0-9]+)-([0-9]+)-([0-9]+)/ && $3 >= 27 && $3 <= 31' < file

正規表現はほとんどgrep EREに似ており、括弧はその部分を変数などでキャプチャします$1$2$3

答え3

選択肢を追加するだけです。

grep -e "2019-10-.." -e "2019-09-.." file

関連情報