Help with regular expression


#1

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


#2

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


#3

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


#4

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 D. wrote:

a file
expressions.
Thank you

Ruby S.

Rob B. http://agileconsultingllc.com
removed_email_address@domain.invalid


#5

Also:

while read firstword rest; do
echo “First word is $firstword”
echo “Rest of line is $rest”
done


#6

On Wed, 22 Oct 2008, Evgeniy D. 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.


#7

On Tue, Oct 21, 2008 at 2:29 PM, Hugh S. removed_email_address@domain.invalid wrote:

not allowed, and no regexp needed.

I wrote it in Ruby in about 5 lines using
How do you compare, using regular expression, the second word in the

Thanks to everyone for your help!


#8

On Tue, Oct 21, 2008 at 5:24 PM, Brian C. removed_email_address@domain.invalid
wrote:

Also:

while read firstword rest; do
echo “First word is $firstword”
echo “Rest of line is $rest”
done

Posted via http://www.ruby-forum.com/.

Thanks to everyone for your help and recommendations!