扩展的glob功能与算术比较

时间:2011-05-13 12:06:02

标签: language-agnostic glob

我有几个用例,我希望能够声明性地指定一组文件,这些文件可能在路径中的不同位置有数字(换句话说,数字可能在规格之间有所不同)但我知道,并且能够指定这些数字范围的条件(例如2到21之间)是有用的。我知道可以在正则表达式中指定数字范围,但它很笨拙且容易出错,特别是在补偿'01'和'1'之类的事情时。

我的问题是,是否有人知道任何提供类似功能的语言或库?这种东西看起来很通用,有用,但我不记得看到类似的东西,并且最初的谷歌搜索并没有改变任何东西。最常见的方法(我认为我以前使用过它,实际上)似乎是使用正则表达式组,然后使用您正在使用的任何编程语言处理它们,但这种一次性解决方案并不真正令人满意。 / p>

以下是我可能要寻找的一个例子:

'/base_path/section/(?<n>\d{2})/subsection/(?<i>\d+)/.+' with 3 < n <= 9 and i < 100

这将返回,例如,

/base_path/section/04/subsection/99/*
/base_path/section/09/subsection/000/*

但不是

/base_path/section/01/subsection/0/*

/base_path/section/05/subsection/01000/*

用例

我现在正在看的主要用例是,我希望能够将一组文件分成两组或更多组进行单独处理,部分基于中间出现的区号的路径。这是在各种配置中运行一些NLP实验的背景下,我希望能够以灵活的方式声明性地指定要使用哪些文件,这样我就不会发疯,试图确保正确的文件是每次都在使用。

1 个答案:

答案 0 :(得分:1)

据我所知,AWK是这种情况下的方法。

示例:

echo '/base_path/section/456/subsection/99/' | awk 'BEGIN { FS = "/" } /\/base_path\/section\/[0-9]+\/subsection\/[0-9]+/ { if (($4 >= 400) && ($4 < 1000) && ($6 < 100)) print $0 }'

这将打印示例路径。

相关问题