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 #.
Have a Unix Problem
Unix
Forum - Do you have a UNIX Question?
Unix Books :-
UNIX Programming,
Certification, System Administration, Performance Tuning Reference Books
Return to : - Unix
System Administration Hints and Tips
(c) www.gotothings.com All material on this site is Copyright.
Every effort is made to ensure the content integrity.
Information used on this site is at your own risk.
All product names are trademarks of their respective
companies.
The site www.gotothings.com is in no way affiliated with
or endorsed by any company listed at this site.
Any unauthorised copying or mirroring is prohibited.
|