【发布时间】:2011-04-20 13:24:03
【问题描述】:
我想为我在 Windows 中执行的 Shell 实现 grep(仅用于学习目的)。
我知道 grep 的语法如下:
grep pattern files
所以我可以制作如下函数:
int grep(string stringToMatch, string fileName) // just one file
{
// search file for stringToMatch
// print line containing stringToMatch
}
我的困惑是,当我使用这样的管道时,grep 应该如何工作:
ls | grep someword
我实现了“ls”,将所有输出放入向量中并返回,所以我想我的 grep 应该在向量中搜索结果。那么正确的 grep 函数应该是什么样子呢?我需要 2 个 grep 函数吗?
提前致谢。
【问题讨论】:
-
为什么要用 C++ 实现 UNIX Shell?
-
我不确定你想要实现多少,但你当然可以使用正则表达式在你的 grep 函数中实现字符串匹配部分。正则表达式参考msdn.microsoft.com/en-us/library/zcwwszd7(v=vs.80).aspx
-
@rubenvb:我正在使用 boost 来熟悉它,所以我想构建一个简单的 shell,使用 boost 库。 @llho:我想我可以使用 boost.regex,谢谢。
-
啊,好吧,学术目的ftw!我会选择Boost.Regex 来完成模式匹配。