searching/grepping for words "near" each other
Kevin D. Clark
kevin_d_clark at comcast.net
Thu Apr 30 12:02:19 EDT 2009
> I want to search a text file for a few (alphabetic) words which must
> be "near" each other, but not necessarily on the same line. "Near"
> could be defined however you like... within a certain number of words
> from each other, a certain number of charecters from each other, or
> some similar constraint.
The following example looks for a certain famous phrase, but does so
in a "loose" manner, accepting anywhere from 1-200 lines of cruft
between the two parts of the phrase. As far as the "cruft" goes, this
code doesn't care about linebreaks.
[pull-start the 500cc swiss-army chainsaw]
perl -0777 -lne 'print "$ARGV:$&" if (/weapons of.{1,200}mass destruction/s)' file1 file2 file3 ... fileN
("0777" causes Perl to "undef $/" (go into "slurp mode"), and the /s
regexp modifier causes "." to match newlines, which regexp engines
usually don't do)
--kevin
--
GnuPG ID: B280F24E God, I loved that Pontiac.
alumni.unh.edu!kdc -- Tom Waits
http://kdc-blog.blogspot.com/
More information about the gnhlug-discuss
mailing list