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:
Post a Comment