Search:  

 
 
   All ForumsHot TopicsGallery






how-to block ads


 
Forums » Tech and Talk » OS and Software » All Things Unix » Make variables uppercase in bash.
Search Topic:
Uniqs:
1554
Share Topic:
RSS topic:
toggle:
flat / full
normal / watch
Posting:
Post a:
Post a:
Sendmail Config... »
« Grub Question.  
AuthorAll Replies


Maxo
Your tax dollars at work.
Premium,VIP
join:2002-11-04
Tallahassee, FL
clubs:
·Embarq

Make variables uppercase in bash.

I am trying to take part of a string and make it uppercase. For example:
export var='abcdefg'
echo ${var:2:1}

With the exception that I need this to return 'C', not 'c'. The only thing I have been able to find are commands that take a whole file as a parameter and makes it all uppercase. Can anyone help me do this please?


deblin
Dark Side of the Moon
Premium,MVM
join:2001-09-01
Middletown, DE

I suppose you can't use tr?

echo ${var:2:1} | tr 'a-z' 'A-Z'

would work, but I take it you want to avoid using tr?
--
He who is not contented with what he has, would not be contented with what he would like to have. -Socrates


Maxo
Your tax dollars at work.
Premium,VIP
join:2002-11-04
Tallahassee, FL
clubs:
All the examples of tr that I saw had to take files. I didn't think about using pipes. I think that should work. I'll try it and let you know.


deblin
Dark Side of the Moon
Premium,MVM
join:2001-09-01
Middletown, DE
oh ok! cool, should do the trick.


Maxo
Your tax dollars at work.
Premium,VIP
join:2002-11-04
Tallahassee, FL
clubs:
·Embarq

I think I may need to be a little more specific. We are writing a bash script that reads some stuff and builds a control file for Oracle's sqlldr, and then we execute sqlldr with the build control file. Our code looks much like this:

The myAmicFiles just looks like this:
amici.990120
amici.990220
amico.990520
amico.990620

I need the i or o to be uppercase.

--
"Padre, nobody said war was fun now bowl!" - Sherman T Potter

»www.cafepress.com/maxolasersquad

»maxolasersquad.com/

»maxolasersquad.com/network/ My DSL Network Guide

»myspace.com/mlsquad


deblin
Dark Side of the Moon
Premium,MVM
join:2001-09-01
Middletown, DE
Looks like a good place for a perl script.


Maxo
Your tax dollars at work.
Premium,VIP
join:2002-11-04
Tallahassee, FL
clubs:
·Embarq

said by deblin See Profile :

Looks like a good place for a perl script.
If you knew what Perl and I had been through the last two and a half weeks you wouldn't joke like that.


deblin
Dark Side of the Moon
Premium,MVM
join:2001-09-01
Middletown, DE

said by Maxo See Profile :

said by deblin See Profile :

Looks like a good place for a perl script.
If you knew what Perl and I had been through the last two and a half weeks you wouldn't joke like that.
heh! ok, well let me take a look.
--
He who is not contented with what he has, would not be contented with what he would like to have. -Socrates


deblin
Dark Side of the Moon
Premium,MVM
join:2001-09-01
Middletown, DE

reply to Maxo
So in this line:

quote:
echo " column3 CONSTANT '" ${LINE:4:1} | tr 'a-z' 'A-Z' "'," >> file_loader.ctl

You want just the capital letter?

E.g. for LINE = amico.990120 you want just the O?

Or do you want amicO.990120 ?
--
He who is not contented with what he has, would not be contented with what he would like to have. -Socrates


deblin
Dark Side of the Moon
Premium,MVM
join:2001-09-01
Middletown, DE

reply to Maxo
Probably the easiest thing to do would be to set a variable for the letter first, then just use that variable.

e.g instead of:

bash code:
echo " column3 CONSTANT '" ${LINE:4:1} | tr 'a-z' 'A-Z' "'," >> file_loader.ctl

try:

bash code:
the_char=`echo ${LINE:4:1} | tr a-z A-Z`
echo " column3 CONSTANT '$the_char'," >> file_loader.tcl

Again, assuming you just want the O there and not the full name. If you want the full name, it'd be slightly more involved but not terribly so.

--
He who is not contented with what he has, would not be contented with what he would like to have. -Socrates


Sir Meowmix III

@windstream.net
reply to Maxo
What about using sed?

s/i/I/g s/o/O/g


deblin
Dark Side of the Moon
Premium,MVM
join:2001-09-01
Middletown, DE

said by Sir Meowmix III :

What about using sed?

s/i/I/g s/o/O/g
Good call, that'd work, if he anchor'd it to the ".", e.g.:

bash code:
... | sed 's/o\./O./g' | sed 's/i\./I\./g'

--
He who is not contented with what he has, would not be contented with what he would like to have. -Socrates


Sir Meowmix III

@windstream.net
reply to Maxo
Agree, good call, at that point the regex would be positional on the file extension.


Maxo
Your tax dollars at work.
Premium,VIP
join:2002-11-04
Tallahassee, FL
clubs:
reply to deblin
the_char=`echo ${LINE:4:1} | tr a-z A-Z`
The above line just returns the given string literal, not the results of the echo.


Maxo
Your tax dollars at work.
Premium,VIP
join:2002-11-04
Tallahassee, FL
clubs:
·Embarq

reply to Sir Meowmix III
I've never used sed before and have only recently began reading up on regular expressions.
I read through the man pages and looked at the code you gave. It appears to work with the following code:

The only thing that is missing is how to take the result of this output and store it in a variable.

--
"Padre, nobody said war was fun now bowl!" - Sherman T Potter

»www.cafepress.com/maxolasersquad

»maxolasersquad.com/

»maxolasersquad.com/network/ My DSL Network Guide

»myspace.com/mlsquad


Sir Meowmix III



Maxo
Your tax dollars at work.
Premium,VIP
join:2002-11-04
Tallahassee, FL
clubs:
·Embarq

said by Sir Meowmix III :

[code]
MYVAR=$(echo $LINE | sed 's/o\./O\./g' | sed 's/i\./I\./g')

echo $MYVAR
[/code]
That did it. Thanks a lot. You can probably tell that we just started learning how to write these scripts a few weeks ago.


Sir Meowmix III

reply to Maxo
Glad to help Maxo. Feel free to ask for help anytime you get stuck.


nixen
Rockin' the Boxen
Premium
join:2002-10-04
Alexandria, VA
·Cox HSI
·Speakeasy


1 edit
reply to Maxo
said by Maxo See Profile :

I've never used sed before and have only recently began reading up on regular expressions.
I read through the man pages and looked at the code you gave. It appears to work with the following code:

The only thing that is missing is how to take the result of this output and store it in a variable.


Or even:
--
The trouble with the world is that the stupid are cocksure and the intelligent are full of doubt. -- Bertrand Russell
-
Forums » Tech and Talk » OS and Software » All Things UnixSendmail Config... »
« Grub Question.  


Monday, 09-Nov 07:38:17 Terms of Use | Privacy Policy | Hosting by www.nac.net - DSL,Hosting & Co-lo | feedback | contact
over 10 years online! © 1999-2009 dslreports.com.
page compression OFF
Most commented news this week
· [156] Cable Uncapper Faces Criminal Charges
· [140] AT&T Sues Verizon Over 3G Ads
· [112] Why Run Fiber When You Can Run Ads That Pretend You Do?
· [109] Comcast Is Simply Getting Huge
· [93] Apple Cooking Up New $30 A Month TV Service?
· [83] Bits Of ACTA Agreement Leaking Out
· [81] Will 'Three Strikes' Come To The United States?
· [78] Verizon To Double Smartphone ETFs?
· [77] Verizon: Droid Tethering Will Cost $30 Extra
· [73] Comcast, NBC Deal Almost Complete
Most people now reading
· [WIN7] Which Services in Win 7 Have You Turned Off? [Microsoft Help]
· Framed for child porn 151; by a PC virus [Security]
· Divorce advice... [General Questions]
· 3.x Feral Druid - Bear Tanking Guide [World of Warcraft]
· Connecting to Google Voice Via SIP [VOIP Tech Chat]
· [Rant] Brand New 'Jasper' Xbox360 - RRoD Hardware Failure [Rants, Raves, and Praise]
· Boeing 720 Demolition [56k Lookout (Broadband Heavy)]
· How to create ISO with nero 8 [Software]
· Is Gear Score now the new requirement to get pug invite? [World of Warcraft]
· [NFL] Week 9 Games Thread [Sports Chat]