我已经搜索甚至喘不过气来阅读手册页,但我仍然无法弄清楚这是怎么回事以及如何解决它......我承认自己是一个正则表达式新手,所以不要羞耻!(Ubuntu 12.04、bash 4.2.25、GNU grep 2.10)
作为执行一系列其他有趣事情(似乎都有效)的脚本的一部分,我正在尝试从文件名中提取数据……存在某些预期的模式……例如,某些文件名将具有日期:日期的格式为“YYYY-MM-DD”,我可以轻松地找出整个事情,然后通过 grepping 将其分解'\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 的方式......或者我认为我知道......
我想我可以重命名文件,但这似乎不优雅。