私はマニュアルページを検索し、息をのむように読んでも、これがどうなっているのか、それを修正する方法をまだ理解できません...私は正規表現の初心者であることを認めているので、恥ではありません! (Ubuntu 12.04、bash 4.2.25、GNU grep 2.10)
他の多くの興味深いことを行うスクリプトの一部として (すべて動作しているようです)、ファイル名からデータを抽出しようとしています... 存在する特定の予想されるパターンがあります..たとえば、一部のファイル名には日付: 日付は "YYYY-MM-DD" の形式で簡単に取得できます。全体を grep で取り出し、後で grep することで分解'\b[0-9]{4}.{1}[0-9]{2}.{1}[0-9]{2}\b'
できます (実際、通常は で直接年を安全にターゲットにすることができます'\b[0-9]{4}\b'
)。これは、入力が文字列は次のいずれかのようになります。
something 1989-07-23 something.jpg" or "foo-2013-01-10-bar.csv
wordsidon'tcareabout_2004-09-14_otherthings.tif
しかし、またはこのfoofoobarbar_2010-07-16.gif
grepのように見える場合、一致するものは見つかりません。
アンダースコアで何が得られますか? なぜ正規表現が失敗するのですか? そして、私が知らないかもしれないこれを行うためのより良い方法はありますか? 私はごくわずかな perl と Java のスキルしか持っていませんが、bash についてはかなりよく知っています... または、知っていると思っていました...
ファイルの名前を変更できると思いますが、それはエレガントではないようです。