【发布时间】:2017-04-11 11:35:56
【问题描述】:
我的 bash 脚本通过管道 (stdin) 获取完整路径,并通过命令行参数获取排除模式。目前这处理正则表达式模式,但我想重写为仅处理 glob 模式。
如何使用 glob 模式(如 fnmatch)过滤 stdin? 因为据我所知,我不能使用 grep 进行通配,而且我不会想手动将glob 模式转换为正则表达式。 - 所以我想找到一个快速而不是 hacky 的解决方案。
示例:
echo -e 'apple tree\nbanana tree\norange tree' | ./filter_script.sh '*ban' '*ge*'
预期输出:
# banana tree
# orange tree
完整的示例代码在GitHub Gists
编辑 1:
在现实生活中,这个脚本会得到上千条路径,所以我认为,原生的 bash 实现并不好。
有人知道“grep like”glob 过滤器吗?
【问题讨论】:
-
给定输入的预期输出是什么?链接中提供的示例没有帮助
-
而不是要点,为什么不在这里添加预期输出的问题?这要好得多,因为我们可以更快地解决您的问题。
-
... 就像,看在上帝的份上,
*n*是指apple tree? (如您预期的输出)?! -
您是否获得了示例(或)文件中的字符串输入?
-
@jm666,你是对的,对不起,我在 Gists 上修复了示例