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 #.
Quick Links:
Have a Unix Problem
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.