Changing Upper and Lower Case

What is the command for changing the following:
KREMS|XXXX YYYY|HHHH|
YYYY UUUUU |YYYYYYYYY|IIIIII

Need to change it to:
Krems|Xxxxx Yxxx|Hhhh|
Yyyy Uuuuu |Yyyyyyyyy|Iiiiii

I have a large file with proper names that need to be converted to upper and lower case.

---

The following solution leaves each character as is that follows either start of line or space or bar character, and downshifts all the rest.
I leave the first character as is (rather than upshift) because you may want something like John deHavilland. But if you do want to upshift all first characters, then remove the #.

awk '{\
newline=""
cap=1
for (i=1;i<=length;i++) {x=substr($0,i,1) if (x=="|" || x==" ") cap=1 else if (cap==1) {#x=toupper(x) cap=0} else x=tolower(x) newline=newline x} print newline }' largefile

---

works fine except for if I have the following
18.yyyyyy-kkkkkk|

need it to be
18.Yyyyyy-Kkkkkk|

Any ideas on how to include these as well

---

Change the if-statement to:
if (x=="|" || x==" " || x=="." || x=="-")

and since you want to upshift (not just downshift), then take out the #.

No comments:

topics