On Fri 17 Jan 2003 15:03:33 +0000(+0100), Robert Land wrote:
> 
> To match a line that starts with a 1, 
> has some digits, at least one space 
> and a name that starts with a K we can write:
> 
> grep '^1[0-9]\{1,\} \{1,\}K' phonelist.txt
> or use * and repeat [0-9] and space:
> grep '^1[0-9][0-9]*  *K' phonelist.txt
> "
> 
> 
> =Why, in the first example, has the author
> prefaced the char 'K' with the one or more
> times multiplier? He only wants to find a 
> name beginning with 'K'(!)

He/she hasn't. The "one or more times multiplier" applies to the preceding element (a 
space). Let's break this regular expression down:

^               matches start of line
1               matches a '1'
[0-9]\{1,\}     matches one or more digits
 \{1,\}         matches one or more spaces
K               matches a 'K'


> 
> Then, in the snd grep command he doubled
> '[0-9]', wouldn't only '^1[0-9]*....'be 
> sufficent? Again, 'K' is prefaced with the
> asterisk which doesn't seem necessary to me.

Again, the asterisk applies to the preceding, not following, element.


The example can be written more simply with egrep:
egrep '^1[0-9]+ +K' phonelist.txt
+ means one or more of the preceding element. It's extended regular expression syntax. 
+See "man 7 regex" for basic vs. extended regular expressions.

I hope this helps.

-- 
Cheers,
Clive


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED] 
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to