fpravica / grep4j

Automatically exported from code.google.com/p/grep4j
0 stars 0 forks source link

Grep4j does not find strings which start with "-". #12

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Hello, I am using grep4j-1.8.5 with Java and Linux, and I have a little problem.
That is, Grep4j does not find strings which start with "-".

I want to grep using a string "-encoding=" which starts with "-"
and coded like this:

    Profile profile = ProfileBuilder.newBuilder().name(fileNameWithoutExtension).filePath(filePath).onLocalhost().build();
    GrepResults results = grep(regularExpression("-encoding="), 
                               on(profile),
                               with(options(onlyMatching(),lineNumber(),ignoreCase(),maxMatches(Const.ONE))));

However, Grep4 cannot find anything, even if the string actually exists in the 
specified file.

For your information, the content of the specified file is like this:
    } else if(args[i].startsWith("-encoding=")){ <-- This is the line I want to grep!
        String[] dim = Util.split(args[i],"=");
        encoding = dim[1];

I wondered why and looked for the answer, but I could find nothing. 
Only thing I currently know is, Grep4 works as I expected when I give a string 
"encoding=" which doesn't start with "-".

If you know something, please let me know. Any suggestions will be appreciated. 
Thank you.

Original issue reported on code.google.com by jdg00xUl...@gmail.com on 17 Dec 2013 at 12:46

GoogleCodeExporter commented 9 years ago
I'm sorry, I used the wrong example.
Actually the string I want to use is "-format=', not '-encoding='.
(If you use '-encoding=', you will get some results.)

And one more thing I've just found. That is, Linux's grep command does not 
allow us to use strings such as '-format' and '-option' for the expression, 
and now I'm wondering if that corresponds to this issue.

Original comment by jdg00xUl...@gmail.com on 17 Dec 2013 at 3:03

GoogleCodeExporter commented 9 years ago
Hi,

yes you cannot grep the string -format in linux as it's probably used as an 
internal keyword for the grep command itself.
I can think of couple of options for you:
1st is to use regex saying anything that starts with (^...):

GrepResults results = grep(regularExpression("^-format="),on(profile));

This will do it.

Or, as 2nd option, you can just use constantExpression and grep for format=
GrepResults results = grep(constantExpression("format="), local);

Original comment by marcocast@gmail.com on 17 Dec 2013 at 9:28

GoogleCodeExporter commented 9 years ago
> #2
Thank you for your quick reply, and thank you very much for the helpful answer!
I used a regular expression ".*-format.*" (which is the 1st idea you gave me) 
and it works just perfect!

Original comment by jdg00xUl...@gmail.com on 18 Dec 2013 at 12:33

GoogleCodeExporter commented 9 years ago

Original comment by marcocast@gmail.com on 18 Dec 2013 at 5:12