私はデートを探していますが、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