Remove columns from a file



  • Hi,
    I am struggling to find a regex command to remove a set of columns from my file , like column 5 to 22 for example , regardless of the file content.

    The file is massive so I need to use regex and not the mouse or cursor.

    Any help would be appreciated.

    Regards.



  • @Laurent

    the first thing you need to figure out is what a column is or how it can be detected.
    Without such an information it is nearly impossible to form a proper regex.



  • @Laurent

    I guess the idea in general is like this:

    find: (?-s)^(.{4}).{17}
    repl: ${1}

    But as @Ekopalypse , there may be some pitfalls.



  • Hello, @laurent, @ekopalypse, @alan-kilborn, and All

    This S/R should work :

    • SEARCH (?-s)^.{4}\K.{1,18}

    • REPLACE Leave EMPTY

    • Click on the Replace All button, exclusively !

    • If lines have less than 22 characters, each character after position 4 is deleted

    Best Regards,

    guy038



  • Thank you all for your replies.

    The command from @Alan-Kilborn is what I was looking for.

    Brilliant, Cheers Alan !



  • This post is deleted!


  • @Laurent

    You could also use the keyboard/mouse to do it, even on a massive file.
    The key to doing it is using the Begin / End Select feature on the Edit menu.

    Here’s how, for example:

    • Move to top-of-file (Ctrl+Home)
    • Move the caret to line 1, column 5.
    • Run Begin / End Select.
    • Move to bottom-of-file (Ctrl+End)
    • Move the caret to line 1, column 22.
    • Press Alt+Shift+right and then Alt+Shift+left (gets you into “column mode”)
    • Run Begin / End Select.

    Your column mode selection should be made across the entire file (it may take some time for the selection to appear if the file is truly on the massive scale).



  • Hi, @laurent, @alan-kilborn and All,

    @Alan-kilborn, your method can even be simplified :

    • Left-mouse click at the beginning of the expected rectangular selection

    • Select the Edit > Begin/End Select menu option ( The option is automatically checked )

    • Move to the location where the rectangular selection must stop

    • Hit the ALT key and, simultaneously, left-mouse click, at this end location

    • Release the ALT key

    • Select, again, the Edit > Begin/End Select menu option ( The option is automatically unchecked )

    => A rectangular selection should appear between the columns defined by the two left-mouse clicks ;-))

    Best Regards,

    guy038

    P.S. :

    It worth to define a shortcut for the Begin/End Select operation ( Line 26 ) in the Shortcut Mapper



  • @guy038 said in Remove columns from a file:

    your method can even be simplified

    It really isn’t a simplification; it’s just the equivalent way for mouse-junkies.
    Since most of my time is spent typing text (well, this is a text editor after all), my hands are most often on the keyboard, not the mouse.

    It worth to define a shortcut for the Begin/End Select operation

    I agree; my favorite for this is assigning to Ctrl+b


    NOTE: I had a copy/paste error in my bullet point above; it should have read:

    • Move the caret to the last line of the file, column 22.


  • Thx again all for the follow up, I quite like @guy038 method too => (?-s)^.{4}\K.{1,18}



  • @Laurent said in Remove columns from a file:

    I quite like @guy038 method too => (?-s)^.{4}\K.{1,18}

    It’s a good method, with one limitation: it uses \K which can’t be used with step-by-step Replace and must be used with a blanket Replace All.

    This is fine, except that often when people are given a cryptic regex that does something, their first inclination is to try and do a one-at-a-time replacement to verify it is working. Then they notice that it isn’t changing their data, and, well, this just makes the confusion grow.

    I prefer to not use \K in solutions, for this reason, unless it really makes sense to (speeds up execution dramatically – which may be the case, here – or there is no other way of achieving a goal).

    Of course, @guy038 said to use Replace All, but still…



  • Hi, @laurent, @alan-kilborn and All,

    When I talk about simplification, it’s a great big word !

    I just meant that we could replace the two shortcuts Alt + Shift+ Left and Alt + Shift+ Right with Alt + Left-mouse click !

    Cheers,

    guy038



  • @guy038 said in Remove columns from a file:

    I just meant that we could replace the two shortcuts Alt + Shift+ Left and Alt + Shift+ Right with Alt + Left-mouse click !

    Still too burdensome, if my hands are on the keyboard. :-)
    But, in truth, I have a macro for those two combinations anyway plus Begin/End Select, tied to Shift+Ctrl+b.
    Thus if I’m doing a normal Begin/End Select, I do two Ctrl+b, one at each end of my block.
    But if I’m intending to do a column version of same, I start it with a Ctrl+b, move to my endpoint, and do Shift+Ctrl+b.

    Initially, I wanted it to be Shift+Alt+b instead, however, I found that combination will “ring the bell” on my machine, which I found very annoying. It seems to do this because “Alt” is involved. Does anyone know how to prevent this, if it doesn’t just happen to me?



  • @Alan-Kilborn said in Remove columns from a file:

    I wanted it to be Shift+Alt+b instead, however, I found that combination will “ring the bell” on my machine

    I believe it’s because in most Windows apps, including Notepad++, the Alt+letter or Alt+Shift+letter will try to activate the menu with that accelerator value. If that accelerator doesn’t exist, then it will beep at you.

    However, when I map the Begin/End Selection to Alt+B and the Macro (Alt+Shift+RightArrow,Alt+Shift+LeftArrow,Being/End Selection) to Alt+Shift+B, the Alt+Shift+B stops ringing the bell.



  • @PeterJones said in Remove columns from a file:

    when I map the Begin/End Selection to Alt+B and the Macro (Alt+Shift+RightArrow,Alt+Shift+LeftArrow,Being/End Selection) to Alt+Shift+B, the Alt+Shift+B stops ringing the bell.

    That’s interesting.
    Does that mean that somehow when invoking the Alt+Shift+b, it knows somehow that Alt+b is assigned to some function in Notepad++ (and thus is not an non-existent menu command)?

    I feel like I want to map Alt+b to nothing (SCI_NULL ?) just so the bell will not ring if I changed my macro to be Shift+Alt+b.
    I certainly don’t want my Begin / End Select command mapped to Alt+b instead of Ctrl+b – after years of having it on Ctrl+b, it would be hard to get used to. Plus, in my mind, Alt+something IS for dropping a menu, unless combined with Shift as well.



  • @Alan-Kilborn said in Remove columns from a file:

    @PeterJones said in Remove columns from a file:

    when I map the Begin/End Selection to Alt+B and the Macro (Alt+Shift+RightArrow,Alt+Shift+LeftArrow,Being/End Selection) to Alt+Shift+B, the Alt+Shift+B stops ringing the bell.

    That’s interesting.
    Does that mean that somehow when invoking the Alt+Shift+b, it knows somehow that Alt+b is assigned to some function in Notepad++ (and thus is not an non-existent menu command)?

    Nope. I unassigned Begin/End Selection, and left Alt+Shift+B on the macro, and Alt+Shift+B still didn’t ring the bell.

    I also verified that using the macro to both Begin and End the column selection worked. Since I don’t have the years of training on Ctrl+B, I might just train myself to Alt+Shift+B for begin and end column selection. :-)



  • @PeterJones said in Remove columns from a file:

    I also verified that using the macro to both Begin and End the column selection worked

    I never thought of “starting” that way, but yes, it should and does work.
    Nice one!

    Nope. I unassigned Begin/End Selection, and left Alt+Shift+B on the macro, and Alt+Shift+B still didn’t ring the bell.

    Something sounds suspicious about this…
    Does it remain after a restart?



  • @Alan-Kilborn said in Remove columns from a file:

    Something sounds suspicious about this…
    Does it remain after a restart?

    It remains after a restart of Notepad++, yes.

    I unzipped a fresh Notepad++, ran it, and verified that Alt+Shift+B beeps at me. Then I assigned the normal Begin/End Selection to Alt+Shift+B. From that moment on, it stopped beeping at me. Even if I restarted that fresh instance. If I go into a different program’s window (say, notepad.exe) and Alt+Shift+B, it will beep at me because of no such accelerator.

    As far as I can tell, I don’t need to have ever assigned Alt+B to make Alt+Shift+B stop beeping.

    Edit: and if I un-assign Alt+Shift+B in either instance of Notepad++, it starts beeping at me again.



  • @PeterJones

    Okay, I will have to do some more trials with the “beeping” thing…

    While we’re on the topic of Begin/End Select … it is a great feature only missing one thing: Some type of visual indication that the “begin” has been done and the “end” is what is pending. Any agreement on that?



  • @Alan-Kilborn said in Remove columns from a file:

    Any agreement on that?

    ++ I would be much more likely to train myself to use that feature – both in normal and column select modes – if I had such a status indicator.

    Given that Scott recently updated the selection status section of the status bar, he might be convinced to add the Begin/End Selection state there, if someone were to suggest it to him.


Log in to reply