ɹəuəllıʍ ʇɐb Posted September 27, 2005 Report Share Posted September 27, 2005 This is a Unix question, actually, but grep may also exist on Linux. And I know that there are some knowledgeable Unix people around here anyway.I need to search a large directory for occurrences of a string that looks something like thatsome_thing[0]I tried it like that, and it didn't find anything.grep some_thing[0] *Same if I put the expression in quotes or double-quotes.This, however, finds hundreds of instancesgrep some_thing *So how do I search for things with certain special characters? Quote Link to comment Share on other sites More sharing options...
korgg Posted September 27, 2005 Report Share Posted September 27, 2005 My collegue came up with this: grep -e "thing_to_find" -R /some_dir/where/the/search/startsMight wanna look at the man at the arguments if this is not working .. No linux machine around here :( ...My way was way too long to put in here :D ... Quote Link to comment Share on other sites More sharing options...
ɹəuəllıʍ ʇɐb Posted September 30, 2005 Author Report Share Posted September 30, 2005 Thanks for the reply. Unfortunately it makes no difference. With or without the -e parameter, "thing_to_find" works ok, but "thing_to_find[0]" doesn't find anything. Quote Link to comment Share on other sites More sharing options...
trackrat Posted September 30, 2005 Report Share Posted September 30, 2005 This may help you.http://pegasus.rutgers.edu/~elflord/unix/grep.html Quote Link to comment Share on other sites More sharing options...
scuzzman Posted October 1, 2005 Report Share Posted October 1, 2005 You'll probably want something like this:grep some_thing\[0\] *The backslashes (\) escape the brackets as they are parsed in the regular expression. For more information on regular expressions, check out this tutorial: http://www.gnoppix.org/pages/rute/node8.htmlAnd yes, grep exists on most every *nix implementation including Linux and *BSD. Quote Link to comment Share on other sites More sharing options...
Topband Posted October 2, 2005 Report Share Posted October 2, 2005 I'm not sure if this is of any help, I've copied the help file from my grep.Usage: grep [OPTION]... PATTERN [FILE] ...Search for PATTERN in each FILE or standard input.Example: grep -i 'hello world' menu.h main.cRegexp selection and interpretation: -E, --extended-regexp PATTERN is an extended regular expression -F, --fixed-strings PATTERN is a set of newline-separated strings -G, --basic-regexp PATTERN is a basic regular expression -P, --perl-regexp PATTERN is a Perl regular expression -e, --regexp=PATTERN use PATTERN as a regular expression -f, --file=FILE obtain PATTERN from FILE -i, --ignore-case ignore case distinctions -w, --word-regexp force PATTERN to match only whole words -x, --line-regexp force PATTERN to match only whole lines -z, --null-data a data line ends in 0 byte, not newlineMiscellaneous: -s, --no-messages suppress error messages -v, --invert-match select non-matching lines -V, --version print version information and exit --help display this help and exit --mmap use memory-mapped input if possibleOutput control: -m, --max-count=NUM stop after NUM matches -b, --byte-offset print the byte offset with output lines -n, --line-number print line number with output lines --line-buffered flush output on every line -H, --with-filename print the filename for each match -h, --no-filename suppress the prefixing filename on output --label=LABEL print LABEL as filename for standard input -o, --only-matching show only the part of a line matching PATTERN -q, --quiet, --silent suppress all normal output --binary-files=TYPE assume that binary files are TYPE TYPE is 'binary', 'text', or 'without-match' -a, --text equivalent to --binary-files=text -I equivalent to --binary-files=without-match -d, --directories=ACTION how to handle directories ACTION is 'read', 'recurse', or 'skip' -D, --devices=ACTION how to handle devices, FIFOs and sockets ACTION is 'read' or 'skip' -R, -r, --recursive equivalent to --directories=recurse --include=PATTERN files that match PATTERN will be examined --exclude=PATTERN files that match PATTERN will be skipped. --exclude-from=FILE files that match PATTERN in FILE will be skipped. -L, --files-without-match only print FILE names containing no match -l, --files-with-matches only print FILE names containing matches -c, --count only print a count of matching lines per FILE -Z, --null print 0 byte after FILE nameContext control: -B, --before-context=NUM print NUM lines of leading context -A, --after-context=NUM print NUM lines of trailing context -C, --context=NUM print NUM lines of output context -NUM same as --context=NUM --color[=WHEN], --colour[=WHEN] use markers to distinguish the matching string WHEN may be `always', `never' or `auto'. -U, --binary do not strip CR characters at EOL (MSDOS) -u, --unix-byte-offsets report offsets as if CRs were not there (MSDOS)`egrep' means `grep -E'. `fgrep' means `grep -F'.With no FILE, or when FILE is -, read standard input. If less thantwo FILEs given, assume -h. Exit status is 0 if match, 1 if no match,and 2 if trouble. Quote Link to comment Share on other sites More sharing options...
ɹəuəllıʍ ʇɐb Posted October 3, 2005 Author Report Share Posted October 3, 2005 Thanks to all who responded :flowers: The escape character did the trick, but the reg-ex link also revealed fgrep to me, which matches strings instead of reg-exes. Had I read the man pages more carefully, I would also have found the -F parameter on the standard grep.For years and years I couldn't use grep correctly, mainly because I didn't understand the concept of regular expressions. Now I finally do :D Thanks again, everyone! Quote Link to comment Share on other sites More sharing options...
ɹəuəllıʍ ʇɐb Posted June 12, 2007 Author Report Share Posted June 12, 2007 1½ years later I have another problem with grep/fgrep. I have circumvented it by downloading everything to Windows, then do a Windows search on it. However, if I need a similar search another time, I would be happy to avoid the large downloads.My problem: I needed to find the negative number six in a large directory: -6. fgrep just says 'Illegal option -6'.I tried fgrep -6 *I tried fgrep "-6" *I tried fgrep \-6 *Nothing works... Quote Link to comment Share on other sites More sharing options...
Seshomaru Samma Posted June 12, 2007 Report Share Posted June 12, 2007 If value is asciishould be something like:grep -r -- -6 name_of_directoryin Debian Linux that is......should be the same in Unix Quote Link to comment Share on other sites More sharing options...
jason.b.c Posted June 12, 2007 Report Share Posted June 12, 2007 What "Unix" system are we talking about here anyways...?FreeBsd..? or one of the Bsd's.. Quote Link to comment Share on other sites More sharing options...
ɹəuəllıʍ ʇɐb Posted June 13, 2007 Author Report Share Posted June 13, 2007 If value is asciishould be something like:grep -r -- -6 name_of_directoryin Debian Linux that is......should be the same in UnixThanks; but sorry - it lists the -r option as invalid.What "Unix" system are we talking about here anyways...?FreeBsd..? or one of the Bsd's..HP-UX.P.S. I just tried without the -r option (but with -- whatever that means) and that returned the correct result. Thanks Quote Link to comment Share on other sites More sharing options...
Seshomaru Samma Posted June 13, 2007 Report Share Posted June 13, 2007 from the man file:-R, -r, --recursive equivalent to --directories=recurse--include=PATTERN files that match PATTERN will be examinedIn Linux you need the -r option to look in all files in a directory , but maybe Unix is different.....what does your man file say?man grep Quote Link to comment Share on other sites More sharing options...
jason.b.c Posted June 13, 2007 Report Share Posted June 13, 2007 shouldn't that be..man | grep..? Quote Link to comment Share on other sites More sharing options...
ɹəuəllıʍ ʇɐb Posted June 13, 2007 Author Report Share Posted June 13, 2007 man grep gives a very long output, but there is no -r option. Quote Link to comment Share on other sites More sharing options...
jason.b.c Posted June 13, 2007 Report Share Posted June 13, 2007 man grep gives a very long output, but there is no -r option.well i guess that if it isn't there then it isn't there...@Patif you are trying to search for a particular file in a directory then why are you not trying the "locate" or "find" commands..? Quote Link to comment Share on other sites More sharing options...
Seshomaru Samma Posted June 14, 2007 Report Share Posted June 14, 2007 grep allows you to search inside a filei googled the HPUX man files and it seems to be somewhat different than the Debian one, not as many options. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.