 Maxo Your tax dollars at work. Premium,VIP join:2002-11-04 Tallahassee, FL clubs:
| 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
| Re: Make variables uppercase in bash. 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: | Re: Make variables uppercase in bash. 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 | Re: Make variables uppercase in bash. oh ok! cool, should do the trick.  | |
|
 |  |  |   Maxo Your tax dollars at work. Premium,VIP join:2002-11-04 Tallahassee, FL clubs:
| Re: Make variables uppercase in bash.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 | Re: Make variables uppercase in bash. Looks like a good place for a perl script.  | |
|
 |  |  |  |  |  |
 |  |  |  |  |  |   deblin Dark Side of the Moon Premium,MVM join:2001-09-01 Middletown, DE
| Re: Make variables uppercase in bash. 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
| 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
| 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 | |
|
 |  |  |  |  |   Maxo Your tax dollars at work. Premium,VIP join:2002-11-04 Tallahassee, FL clubs: | Re: Make variables uppercase in bash. 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. | |
|
 |
 |   deblin Dark Side of the Moon Premium,MVM join:2001-09-01 Middletown, DE
| Re: Make variables uppercase in bash.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 | |
|
 |   Maxo Your tax dollars at work. Premium,VIP join:2002-11-04 Tallahassee, FL clubs:
| 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 | |
|
 |  |  |
 |  |  |   Maxo Your tax dollars at work. Premium,VIP join:2002-11-04 Tallahassee, FL clubs:
| Re: Make variables uppercase in bash. 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. | |
|
 |  |   nixen Rockin' the Boxen Premium join:2002-10-04 Alexandria, VA
·Cox HSI
·Speakeasy
1 edit | said by Maxo :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 | |
|
  Sir Meowmix III
@windstream.net | Agree, good call, at that point the regex would be positional on the file extension. | |
|
  Sir Meowmix III
| Glad to help Maxo. Feel free to ask for help anytime you get stuck. | |
|
 |
|
 |