私はyyyymmddで終わるファイル名を持つ例:myFile.20090601、myFile20090708など正規表現でこれを構築する方法
私は2009年の7月7日に6月8日から、すべてのファイル内のパターンをgrepしたいですつまり:20090609〜20090707
正規表現を一度に行うにはどうすればよいですか?
私が試した:
grep 'myPattern' *20090(6(09|[1-3][0-9])|70[1-7])
私はyyyymmddで終わるファイル名を持つ例:myFile.20090601、myFile20090708など正規表現でこれを構築する方法
私は2009年の7月7日に6月8日から、すべてのファイル内のパターンをgrepしたいですつまり:20090609〜20090707
正規表現を一度に行うにはどうすればよいですか?
私が試した:
grep 'myPattern' *20090(6(09|[1-3][0-9])|70[1-7])
20090(6(09|[1-3][0-9])|70[1-7])$
または
20090(6(0[89]|[1-3][0-9])|70[1-7])$
をあなたは8日か7月9日のものかどうかに応じて(あなたの質問が矛盾しているようです)。
有効な日付の範囲は、6月は06-30、7月は01-07です。日数の範囲が異なるため、毎月別々の正規表現を使用する必要があります。これらは
/2009 06 (09 | [12][0-9] | 30)/x
(単位場所が依存するために有効であるかについて、さまざまな条件があるので、一日の範囲は十の位に応じて、ケースに分けられている方法に注目してください。)
そして
/2009 07 0[1-7]/x
を
し、我々は
/(2009 06 (09 | [12][0-9] | 30)) | (2009 07 0[1-7])/x
、その後要因にそれらを結合することができます3つのパラメータを取り
/2009 0 (6 (09 | [12][0-9] | 30)) | (7 0[1-7]) $/x
そして、あなたは手動ですべての日付範囲でこれを行う必要があります... –
私はperlの/ Pythonスクリプト(または任意の他のスクリプト言語)をお勧めしたい:共通点(readabiltyための最善ではないかもしれない)と行末のアサーションを追加して:YYYYMMDD
としてYYYYMMDD
grep 'myPattern' `ls | grep -E "20090(6(09|[1-3][0-9])|70[1-7])"`
をgrepします。現在のディレクトリ(ls
)のファイルのリストを取得し、日付正規表現(ls | grep ...
)を使用してそれをフィルタリングし、生成されたファイルリスト(grep 'myPattern' ...
)でパターンを使用してgrep検索を実行します。 ls | grep ...
を囲むバックティックは、コマンドのその部分を実行し、そのコマンドの出力を周囲のコマンドに置き換えます。したがって、 "file1 file2 file3
"のような出力が生成された場合は、grep 'myPattern' file1 file2 file3
のようなコマンドになります。
"into"を変更する必要があります。そうでなければ、シェルに応じて、ワイルドカードが展開される可能性があります。 –
私はそこにアスタリスクgrep -Eパラメータ。 – Svante
なぜこれに対して正規表現を使用したいですか? –
これらのファイルのパターンに対してgrepしたいです。 – Saobi
+1 - これがなぜ落とされたのかわからない - 私は人々が彼らがdownvote時にコメントを残すことを望むので、私たちは彼らがどこから来ているかを理解するために使うことができます –