Hello, again,
Most folks who've worked on Linux or Unix before know that when you run a command like:
ps -ef|grep process
You end up, sometimes, with two lines of output. One with the process you're grepping for (if it exists) and one that shows your grep command executing.
Generally, most people I've known do this:
ps -ef|grep process|grep -v grep
While this is perfectly legitimate, you can actually use the shell's builtin functions to achieve the same thing with fewer keystrokes. It's look cooler too :) Do this instead:
ps -ef|grep "[p]rocess"
The big difference here is the thing we're grepping for. Note that it's in quotes and the first letter (although it could be the second, third or whichever) is in square brackets ([]). This will only produce one line of output: The line with the process you're grepping for.
The reason this works is that the shell interprets the character within the square brackets as a "range" (albeit of one character) and effectively strips the brackets when it interprets the command (it's still running your original "grep process"). And the reason it will never match itself is that, in the "ps -ef" output, your literal brackets will still be there and, of course, won't match.
Enjoy :)
, Mike
linux unix internet technology
Tuesday, October 30, 2007
Keeping Grep Out of Your Grep Output
Posted by Mike Golvach at 1:48 AM
administration, advice, grep, linux, process, ps, range, regular expression, scripting, technology, tips, tricks, unix