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 ToolsNext: 27.16 Faking Case-Insensitive Searches
27.14 Compound Searches Book Index27.16 Faking Case-Insensitive Searches

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