Create aligned columns



  • Hi all,

    I would like to create columns out of the list of numbers I have.
    The goal is to achieve the same column style of the first row of numbers (ROW8) that you can see in the picture (see link: http://imgur.com/a/afR3M ).
    The following rows of numbers have the same length (same amount of digits as in ROW 8) but they have no spaces in between and I want them to get aligned.
    Here there is a scheme of the [spaces] and the number of digits I would like to obtain.
    [10] 10 [12] 8 [11] 9 [11] 9 [11] 9 [11] 9 [11] 9 [11] 9 [11] 9 [11] 9.

    Hopefully someone can help me with this!
    Cheers,
    Giuliana



  • Hello, Giuliana,

    Not very difficult with regular expressions !

    From your picture, Giuliana, each line of your file ( 90 characters long ) must be separated, according to the template : “10spaces - 10 digits - 12 spaces - 8 digits - ( 11 spaces 9 digits ) * 8”, to obtain a line of 200 characters long

    So :

    • Open your file and move back to its very beginning, if necessary

    • Open the Replace dialog

    • Type, in the two *Find what: and Replace with: fields, the following regex expressions, WITHOUT the double quotes ( " )

    SEARCH "(?-s)^(.{10})(.{8})(.{9})(.{9})(.{9})(.{9})(.{9})(.{9})(.{9})(.{9})"
    
    REPLACE "          $1            $2           $3           $4           $5           $6           $7           $8           $9           $10"
    
    • Beware :

      • There are 10 space characters, between the " character and the back-reference $1
      • There are 12 space characters, between the the two back-references $1 and $2
      • Then, always 11 space characters, between two back-references, till the end of the line
    • Check the Regular expression search mode ( IMPORTANT )

    • Finally, click on the Replace All button

    So, starting, for instance, from the original line, below :

    135012160427072098258328479258328482258328481258328480258328483258328486258328485258328484
    

    you’ll get the formatted text, below :

              1350121604            27072098           258328479           258328482           258328481           258328480           258328483           258328486           258328485           258328484
    

    NOTES :

    • At beginning of the search regex, the syntax (?-s) ensures you that the following dot characters refer to a single standard character, only

    • The syntax .{n}, where n is a digit, represents n consecutive standard characters, from current caret position,

    • As this syntax is enclosed within two round brackets, these n characters are stored, successively, as group 1, 2, 3

    • And are re-written, in replacement, accordingly to the appropriate back-reference $x, simply preceded by the correct amount of space characters

    Cheers,

    guy038



  • Thank you sooo much for your reply!!!
    Very clear and exhaustive!

    Have a great weekend and thanks again :)
    Cheers,
    Giuliana


Log in to reply