Sort all uppercase, first letter uppercase, all lowercase

Help with writing and playing macros

Sort all uppercase, first letter uppercase, all lowercase

Postby boromir » Sun Nov 23, 2008 7:08 am

Hello,
I am new to the forum and had posted this query today morning but due to some glitch it has not appeared in the forum.

My problem is simple. I have files with data in 3 formats:

ALL UPPER CASE
Only Initial Letter in Upper case
all lower case.

Example:
AAA
Abc
aaa
BBB
Def
bbb

Using Ultraedit sort routine I get:
AAA
Abc
BBB
Def
aaa
bbb

Whereas what I want is
ALL UPPER CASE FIRST
First letter in Upper case next and
all lowercase at the end

Example
AAA
BBB
Abc
Def
aaa
bbb

Is there a macro to do this job? I work with huge files and cleaning them manually is getting painful. A macro would really help.

Many thanks in advance

Best rgrds,

Boromir
User avatar
boromir
Newbie
 
Posts: 4
Joined: Sat Jan 26, 2008 12:00 am

Re: Sort all uppercase, first letter uppercase, all lowercase

Postby Mofi » Mon Nov 24, 2008 8:13 am

The following macro works on your small example.

It first cuts all lines starting with not an uppercase character and collects them in clipboard 9.

Next it cuts all lines starting with an uppercase character and the second character is not an uppercase character and collects them in clipboard 8.

The remaining lines are those starting with 2 uppercase characters and empty lines. These lines are now sorted.

The cutted lines starting with an uppercase character, but second character is not an uppercase character are pasted now from clipboard 8 into a new file, sorted and copied back into the source file below the already sorted lines (more or less) completely in uppercase.

Same procedure is done next with the lines in clipboard 9 which do not start with an uppercase character. The new file is closed without saving.

The result is what you asked for. I just can hope it works also for your huge files. That depends on how large your file really is and how much RAM you have to hold all the data in the clipboards.

The macro property Continue if a Find with Replace not found or Continue if search string not found must be checked for this macro.

InsertMode
ColumnModeOff
HexOff
UnixReOff
Bottom
IfColNumGt 1
"
"
EndIf
Top
Clipboard 9
ClearClipboard
Loop
Find MatchCase RegExp "%[~A-Z^p]*^p"
IfFound
CutAppend
Else
ExitLoop
EndIf
EndLoop
Top
Clipboard 8
ClearClipboard
Loop
Find MatchCase RegExp "%[A-Z][~A-Z^p]*^p"
IfFound
CutAppend
Else
ExitLoop
EndIf
EndLoop
Top
SortAsc 1 -1 0 0 0 0 0 0
NewFile
Paste
Top
SortAsc 1 -1 0 0 0 0 0 0
SelectAll
Cut
NextWindow
Bottom
Paste
ClearClipboard
Clipboard 9
PreviousWindow
Paste
Top
SortAsc 1 -1 0 0 0 0 0 0
SelectAll
Copy
CloseFile NoSave
Paste
ClearClipboard
Clipboard 0
User avatar
Mofi
Grand Master
Grand Master
 
Posts: 4039
Joined: Thu Jul 29, 2004 11:00 pm
Location: Vienna

Re: Sort all uppercase, first letter uppercase, all lowercase

Postby boromir » Mon Nov 24, 2008 11:15 am

Mofi u r the greatest it works like a charm and too on very long files. I understood a major part of the macro but I couldn't get the following:
SortAsc 1 -1 0 0 0 0 0 0
What exactly does this function do?
If you have time to explain it would be great.
Many thanks once more. U r a lifesaver,

Best regds,

Boromir
User avatar
boromir
Newbie
 
Posts: 4
Joined: Sat Jan 26, 2008 12:00 am

Re: Sort all uppercase, first letter uppercase, all lowercase

Postby Mofi » Tue Nov 25, 2008 8:04 am

SortAsc 1 -1 0 0 0 0 0 0

means sort whole file (or only the selected lines) ascending, case-sensitive and evaluate the entire line as sorting criteria. That command does the same as when you open File - Sort - Advanced Sort/Options, choose Ascending as sort order, uncheck all options and enter for Key 1 the value 1 for the start column and -1 for the end column which means end of line. For details see the help page for this dialog - press key F1 when dialog is open.
User avatar
Mofi
Grand Master
Grand Master
 
Posts: 4039
Joined: Thu Jul 29, 2004 11:00 pm
Location: Vienna


Return to Macros