我正试图找到一种方法
grep -o "somepattern"
给了我类似的东西
html/file.js
2:somepattern
5:somepattern
但真正好的是在比赛之前和/或之后有几个角色(可能是20个)。
我知道有一种方法可以在(上下文)之前和之后显示行,但有没有办法按字符显示上下文? e.g。
html/file.js
2:function helloWorld(somepattern) {
5: var foo = somepattern;
我问的原因是,如果我递归地grep并用匹配命中一个缩小的文件,它会打印整个文件,这非常烦人。
答案 0 :(得分:22)
ack
:% ack -o '.{0,10}string.{0,10}' | head
cli/cmdlineparser.cpp:22:#include <string>
cli/cmdlineparser.cpp:23:include <cstring>
cli/cmdlineparser.cpp:37:onst std::string& FileList
ctor<std::string>& PathNam
cli/cmdlineparser.cpp:57: std::string FileName;
cli/cmdlineparser.cpp:66:onst std::string& FileList
list<std::string>& PathNam
cli/cmdlineparser.cpp:72: std::string PathName;
cli/cmdlineparser.cpp:92:onst std::string &message)
cli/cmdlineparser.cpp:133:onst std::string errmsg =
grep
:% grep -no '.\{0,10\}string.\{0,10\}' **/*.[ch]* | head
cli/cmdlineparser.cpp:22:#include <string>
cli/cmdlineparser.cpp:23:include <cstring>
cli/cmdlineparser.cpp:37:onst std::string& FileList
ctor<std::string>& PathNam
cli/cmdlineparser.cpp:57: std::string FileName;
cli/cmdlineparser.cpp:66:onst std::string& FileList
list<std::string>& PathNam
cli/cmdlineparser.cpp:72: std::string PathName;
cli/cmdlineparser.cpp:92:onst std::string &message)
cli/cmdlineparser.cpp:133:onst std::string errmsg =
...之前最多显示10个字符,'string'之后显示10个字符...(假设它们在那里)。
我在这里使用| head
仅仅是为了清晰起见将输出限制为10行。