[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Help with regular expression

Ruby Student

10/21/2008 6:08:00 PM

[Note: parts of this message were removed to make it a legal post.]

Team,
A colleague asked me if I could write a script to:

Read a text file where each record has two words.
If the second word in the record is not 100% uppercase, write it to a file
and convert it to uppercase.
I wrote it in Ruby in about 5 lines using IO.foreach("/tmp/somefile.txt") do
|file| for the input file and fo = File.open("/tmp/somefile.out","a+") for
the output file, upcase method.
Then she threw a curve ball at me telling me that she wanted it in Korn
Shell using regular expression.
The facts are that I don't know how to do this using regular expressions.
I am not asking anyone to solve for me, but if you can tell me:

How do you compare, using regular expression, the second word in the input
record for upper case. In other words, if the second word has at least 1
lower-case char, it has to be flagged and translated to upper-case.

I will deal with the I/O issues in Korn Shell.

Thank you
--
Ruby Student

7 Answers

Evgeniy Dolzhenko

10/21/2008 6:18:00 PM

0

/\b[A-Z]+$/
will match if last word in string is not 100% upppercase

On Tue, Oct 21, 2008 at 10:08 PM, Ruby Student <ruby.student@gmail.com> wrote:
> Team,
> A colleague asked me if I could write a script to:
>
> Read a text file where each record has two words.
> If the second word in the record is not 100% uppercase, write it to a file
> and convert it to uppercase.
> I wrote it in Ruby in about 5 lines using IO.foreach("/tmp/somefile.txt") do
> |file| for the input file and fo = File.open("/tmp/somefile.out","a+") for
> the output file, upcase method.
> Then she threw a curve ball at me telling me that she wanted it in Korn
> Shell using regular expression.
> The facts are that I don't know how to do this using regular expressions.
> I am not asking anyone to solve for me, but if you can tell me:
>
> How do you compare, using regular expression, the second word in the input
> record for upper case. In other words, if the second word has at least 1
> lower-case char, it has to be flagged and translated to upper-case.
>
> I will deal with the I/O issues in Korn Shell.
>
> Thank you
> --
> Ruby Student
>

Rob Biedenharn

10/21/2008 6:26:00 PM

0

I think you want to use

string =~ ere

ere is an extended regular expression.

You might also be able to exploit:

typeset -u somevar

which causes $somevar to be upcased
(e.g., somevar='hello'; [ $somevar == 'HELLO' ] is true)

man ksh is now your friend.

-Rob

On Oct 21, 2008, at 2:17 PM, Evgeniy Dolzhenko wrote:

> /\b[A-Z]+$/
> will match if last word in string is not 100% upppercase
>
> On Tue, Oct 21, 2008 at 10:08 PM, Ruby Student
> <ruby.student@gmail.com> wrote:
>> Team,
>> A colleague asked me if I could write a script to:
>>
>> Read a text file where each record has two words.
>> If the second word in the record is not 100% uppercase, write it to
>> a file
>> and convert it to uppercase.
>> I wrote it in Ruby in about 5 lines using IO.foreach("/tmp/
>> somefile.txt") do
>> |file| for the input file and fo = File.open("/tmp/somefile.out","a
>> +") for
>> the output file, upcase method.
>> Then she threw a curve ball at me telling me that she wanted it in
>> Korn
>> Shell using regular expression.
>> The facts are that I don't know how to do this using regular
>> expressions.
>> I am not asking anyone to solve for me, but if you can tell me:
>>
>> How do you compare, using regular expression, the second word in
>> the input
>> record for upper case. In other words, if the second word has at
>> least 1
>> lower-case char, it has to be flagged and translated to upper-case.
>>
>> I will deal with the I/O issues in Korn Shell.
>>
>> Thank you
>> --
>> Ruby Student
>>
>

Rob Biedenharn http://agileconsult...
Rob@AgileConsultingLLC.com


Hugh Sasse

10/21/2008 6:29:00 PM

0



On Wed, 22 Oct 2008, Evgeniy Dolzhenko wrote:

> /\b[A-Z]+$/
> will match if last word in string is not 100% upppercase
s/not//

If you convert a string to uppercase, and it already is all uppercase,
then it will be unchanged.... I'd use awk if a dependence on ruby is
not allowed, and no regexp needed.
>
> On Tue, Oct 21, 2008 at 10:08 PM, Ruby Student <ruby.student@gmail.com> wrote:
> > Team,
> > A colleague asked me if I could write a script to:
> >
> > Read a text file where each record has two words.
> > If the second word in the record is not 100% uppercase, write it to a file
> > and convert it to uppercase.
> > I wrote it in Ruby in about 5 lines using IO.foreach("/tmp/somefile.txt") do
> > |file| for the input file and fo = File.open("/tmp/somefile.out","a+") for
> > the output file, upcase method.
> > Then she threw a curve ball at me telling me that she wanted it in Korn
> > Shell using regular expression.
> > The facts are that I don't know how to do this using regular expressions.
> > I am not asking anyone to solve for me, but if you can tell me:
> >
> > How do you compare, using regular expression, the second word in the input
> > record for upper case. In other words, if the second word has at least 1
> > lower-case char, it has to be flagged and translated to upper-case.
> >
> > I will deal with the I/O issues in Korn Shell.
> >
> > Thank you
> > --
> > Ruby Student
> >
>

Ruby Student

10/21/2008 7:30:00 PM

0

[Note: parts of this message were removed to make it a legal post.]

On Tue, Oct 21, 2008 at 2:29 PM, Hugh Sasse <hgs@dmu.ac.uk> wrote:

>
>
> On Wed, 22 Oct 2008, Evgeniy Dolzhenko wrote:
>
> > /\b[A-Z]+$/
> > will match if last word in string is not 100% upppercase
> s/not//
>
> If you convert a string to uppercase, and it already is all uppercase,
> then it will be unchanged.... I'd use awk if a dependence on ruby is
> not allowed, and no regexp needed.
> >
> > On Tue, Oct 21, 2008 at 10:08 PM, Ruby Student <ruby.student@gmail.com>
> wrote:
> > > Team,
> > > A colleague asked me if I could write a script to:
> > >
> > > Read a text file where each record has two words.
> > > If the second word in the record is not 100% uppercase, write it to a
> file
> > > and convert it to uppercase.
> > > I wrote it in Ruby in about 5 lines using
> IO.foreach("/tmp/somefile.txt") do
> > > |file| for the input file and fo = File.open("/tmp/somefile.out","a+")
> for
> > > the output file, upcase method.
> > > Then she threw a curve ball at me telling me that she wanted it in Korn
> > > Shell using regular expression.
> > > The facts are that I don't know how to do this using regular
> expressions.
> > > I am not asking anyone to solve for me, but if you can tell me:
> > >
> > > How do you compare, using regular expression, the second word in the
> input
> > > record for upper case. In other words, if the second word has at least
> 1
> > > lower-case char, it has to be flagged and translated to upper-case.
> > >
> > > I will deal with the I/O issues in Korn Shell.
> > >
> > > Thank you
> > > --
> > > Ruby Student
> > >
> >
>
>
Thanks to everyone for your help!

--
Ruby Student

Brian Candler

10/21/2008 9:06:00 PM

0

> How do you compare, using regular expression, the second word in the
> input
> record for upper case.

man sed
man expr
man tr

For further help, try the comp.unix.shell group
--
Posted via http://www.ruby-....

Brian Candler

10/21/2008 9:24:00 PM

0

Also:

while read firstword rest; do
echo "First word is $firstword"
echo "Rest of line is $rest"
done
--
Posted via http://www.ruby-....

Ruby Student

10/22/2008 3:02:00 PM

0

[Note: parts of this message were removed to make it a legal post.]

On Tue, Oct 21, 2008 at 5:24 PM, Brian Candler <b.candler@pobox.com> wrote:

> Also:
>
> while read firstword rest; do
> echo "First word is $firstword"
> echo "Rest of line is $rest"
> done
> --
> Posted via http://www.ruby-....
>
>
Thanks to everyone for your help and recommendations!

--
Ruby Student