home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


UNIX Power Tools

UNIX Power ToolsSearch this book
Previous: 27.14 Compound Searches Chapter 27
Searching Through Files
Next: 27.16 Faking Case-Insensitive Searches
 

27.15 Narrowing a Search Quickly

If you're searching a long file to find a particular word or name, or you're running a program like ls -l and you want to filter some lines, here's a quick way to narrow down the search. As an example, say your phone file has 20,000 lines like these:

Smith, Nancy:MFG:50 Park Place:Huntsville:(205)234-5678

and you want to find someone named Nancy. When you see more information, you know you can find which of the Nancys she is:

% 

grep Nancy phones



...150 lines of names...

Use the C shell's history mechanism ( 11.2 ) and sed ( 34.24 ) to cut out lines you don't want. For example, about a third of the Nancys are in Huntsville, and you know she doesn't work there:

% 

!! | sed -e /Huntsville/d


grep Nancy phones | sed -e /Huntsville/d

...100 lines of names...

The shell shows the command it's executing: the previous command ( !! ) piped to sed , which deletes lines in the grep output that have the word Huntsville .

Okay. You know Nancy doesn't work in the MFG or SLS groups, so delete those lines, too:

% 

!! -e /MFG/d -e /SLS/d


grep Nancy phones | sed -e /Huntsville/d -e /MFG/d -e /SLS/d

...20 lines of names...

Keep using !! to repeat the previous command line, and adding more sed expressions, until the list gets short enough. The same thing works for other commands - when you're hunting for errors in uulog ( 1.33 ) output, for example, and you want to skip lines with SUCCEEDED and OK :

% 

uulog | sed -e /SUCCEEDED/d -e /OK/d


...

If the matching pattern has anything but letters and numbers in it, you'll have to understand shell quoting ( 8.14 ) and sed regular expressions ( 26.4 ) . Most times, though, this quick-and-dirty way works just fine.

- JP


Previous: 27.14 Compound Searches UNIX Power Tools Next: 27.16 Faking Case-Insensitive Searches
27.14 Compound Searches Book Index 27.16 Faking Case-Insensitive Searches

The UNIX CD Bookshelf Navigation The UNIX CD BookshelfUNIX Power ToolsUNIX in a NutshellLearning the vi Editorsed & awkLearning the Korn ShellLearning the UNIX Operating System