[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: funny...



Now I get it. I had out the Linux in a nutshell book trying to decypher
this one but just couldn't quite get a grasp on the deletes and don't
deletes. Now I get it. Thanks.

Steve

On Fri, 2002-10-18 at 08:43, mike808@users.sourceforge.net wrote:
> Steve Reindl wrote:
> > OK so I'm stupid. How do I get "hello world" out of this?
> 
> sed '/^[when][coders]/!d
>     /^...[discover].$/d
>    /^..[real].[code]$/!d
> ' /usr/share/dict/words
> 
> Or:
> sed '/^[when][coders]/!d;/^...[discover].$/d;/^..[real].[code]$/!
> d' /usr/share/dict/words
> 
> 
> 1. Start with the dictionary file (lots of words) (/usr/share/dict/words).
> On Solaris, this file is in /usr/share/lib/dict/words.
> 2. Run a sed filter on it.
> 3. Out pops "hello world". :=)
> 
> To explain step 2, for the sed-impaired or the synaptically challenged:
> 1. Patterns are bounded by "/" characters, followed by a command.
> 2. The command is applied to the lines matching the pattern.
> 3. "//d" would mean "get rid of the matches"
> 4. "//!d" would mean "keep only the matches" (i.e. get rid of the non-matches).
> 5. /usr/share/dict/words is a file of words, one word per line.
> 
> Now the sed regexes, one by one:
> A. /^[when][coders]/!d ==> keep words that start with "w", "h", "e", or "n",
> and then followed by a "c", "o", "d", "e", "r", or an "s".
> 
>    $ sed '/^[when][coders]/!d' /usr/share/dict/words
> 
> [898 words total, "HEllo" and "WOrld" are among them.]
> 
> B. /^...[discover].$/d ==> get rid of five letter words with any letter in
> the word "discover" as the fourth character of the word.
> 
>    $ sed '/^[when][coders]/!d;/^...[discover].$/d' /usr/share/dict/words
> 
> [840 words total, "helLo" and "worLd" are NOT among them.]
> 
> C. /^..[real].[code]$/!d ==> keep only five letter words with a r, e, a, or l
> in the third character and c, o, d, or e as the last character.
> 
> [</drumroll> ... 2 words total, and "heLlO" and "woRlD" are they.]
> 
> QED.
> 
> Mike808/
> 
> ---------------------------------------------
> http://www.valuenet.net
> 
> 
> 
> -
> To unsubscribe, send email to majordomo@silug.org with
> "unsubscribe silug-discuss" in the body.
> 



-
To unsubscribe, send email to majordomo@silug.org with
"unsubscribe silug-discuss" in the body.