• Login
Community
  • Login

Special sorting

Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
6 Posts 4 Posters 394 Views
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • V
    VAVoices
    last edited by VAVoices Dec 11, 2022, 1:44 PM Dec 11, 2022, 1:41 PM

    Hello.

    I’m looking for help with text sorting. I have a large datapack (60k+ rows) that is not sorted by ID.

    40d82f20-8bff-4454-aca0-c874b9eee4fc-image.png

    I tried using the standard sorting functions by numeric value, but since in the skill_name=[…] section there are also different letters and numbers - this breaks sorting.
    5ee69da5-8c95-4d88-97a7-afcfb02511fe-image.png
    Is there any way to sort rows by numeric value inside skill_id=[…]? or is it impossible in NPP++ and I need to write a parser for sorting it?

    Thanks in advance for your replies.

    A 1 Reply Last reply Dec 11, 2022, 2:12 PM Reply Quote 0
    • A
      Alan Kilborn @VAVoices
      last edited by Dec 11, 2022, 2:12 PM

      @VAVoices

      any way to sort rows by numeric value inside skill_id=[…]? or is it impossible in NPP++ and I need to write a parser for sorting it?

      You need to resort to programming to achieve such a goal. If you want to do it within Notepad++, then scripting plugins are available to help achieve it.

      1 Reply Last reply Reply Quote 0
      • G
        guy038
        last edited by guy038 Dec 11, 2022, 5:16 PM Dec 11, 2022, 5:14 PM

        Hello, @vavoices, @alan-kilborn and All,

        There is an easy solution to your problem. You just have to, temporarily, copy all the fields, which need sorting, at the beginning of curent line, accordingly to their sorting order ;-))


        For instance, starting with this INPUT text ( dummy text to illustrate the technique ! ) :

        skill_begin skill_name=[auto belt1] skill_id=10022  level=1 operate_type=P  magic
        skill_begin skill_name=[auto_belt2] skill_id=10023  level=1 operate_type=P  magic
        skill_begin skill_name=[auto_belt3] skill_id=10024  level=1 operate_type=P  magic
        skill_begin skill_name=[auto_belt4] skill_id=10025  level=1 operate_type=P  magic
        skill_begin skill_name=[br_s_item_herb_of_ginseng_recovery] skill_id=22004  level=1
        skill_begin skill name=[br_s_item_herb_of_ginseng_vp_up]    skill_id=22005  level=2
        skill_begin skill_name=[br_s_item_herb_of_ginseng_recovery] skill_id=22004  level=7
        skill_begin skill_name=[br_s_item_herb_of_ginseng_recovery] skill_id=22004  level=8
        skill_begin skill_name=[br_s_item_herb_of_kimchi_power_a]   skill_id=22000  level=3
        sklll_begin skill_name=[br_s_item_herb_of_kimchi_power_b]   skill_id=22001  level=4
        skill_begin skill_name=[br_s_item_herb_of_kimchi_power_c]   skill_id=22002  level=4
        skill_begin skill_name=[br_s_item_herb_of_ginseng_recovery] skill_id=22004  level=9
        skill_begin skill_name=[br_s_item_herb_of_kimchi_time]  skill_id=22003  level=1
        skill_begin skill_name=[chain_hydral]   skill_id=18230  level=1 operate_type=A2
        skill_begin skill_name=[chain_hydra2]   skill_id=18230  level=2 operate_type=A2
        sklll_begin skill_name=[chain_hydra3]   skill_id=18230  level=3 operate_type=A2
        skill_begin skill_name=[chain_hydra4]   skill_id=18230  level=4 operate_type=A2
        

        Let’s suppose that you want to sort these lines, in ascending direction, by skill_id values and by level values

        Then, perform the following regex S/R :

        SEARCH (?x-is) ^ .* \b ( skill_id= \d+ ) .+ \b ( level= \d ) \b .*

        REPLACE $1 $2 $0

        you’ll get this temporary text :

        skill_id=10022 level=1 skill_begin skill_name=[auto belt1] skill_id=10022  level=1 operate_type=P  magic
        skill_id=10023 level=1 skill_begin skill_name=[auto_belt2] skill_id=10023  level=1 operate_type=P  magic
        skill_id=10024 level=1 skill_begin skill_name=[auto_belt3] skill_id=10024  level=1 operate_type=P  magic
        skill_id=10025 level=1 skill_begin skill_name=[auto_belt4] skill_id=10025  level=1 operate_type=P  magic
        skill_id=22004 level=1 skill_begin skill_name=[br_s_item_herb_of_ginseng_recovery] skill_id=22004  level=1
        skill_id=22005 level=2 skill_begin skill name=[br_s_item_herb_of_ginseng_vp_up]    skill_id=22005  level=2
        skill_id=22004 level=7 skill_begin skill_name=[br_s_item_herb_of_ginseng_recovery] skill_id=22004  level=7
        skill_id=22004 level=8 skill_begin skill_name=[br_s_item_herb_of_ginseng_recovery] skill_id=22004  level=8
        skill_id=22000 level=3 skill_begin skill_name=[br_s_item_herb_of_kimchi_power_a]   skill_id=22000  level=3
        skill_id=22001 level=4 sklll_begin skill_name=[br_s_item_herb_of_kimchi_power_b]   skill_id=22001  level=4
        skill_id=22002 level=4 skill_begin skill_name=[br_s_item_herb_of_kimchi_power_c]   skill_id=22002  level=4
        skill_id=22004 level=9 skill_begin skill_name=[br_s_item_herb_of_ginseng_recovery] skill_id=22004  level=9
        skill_id=22003 level=1 skill_begin skill_name=[br_s_item_herb_of_kimchi_time]  skill_id=22003  level=1
        skill_id=18230 level=1 skill_begin skill_name=[chain_hydral]   skill_id=18230  level=1 operate_type=A2
        skill_id=18230 level=2 skill_begin skill_name=[chain_hydra2]   skill_id=18230  level=2 operate_type=A2
        skill_id=18230 level=3 sklll_begin skill_name=[chain_hydra3]   skill_id=18230  level=3 operate_type=A2
        skill_id=18230 level=4 skill_begin skill_name=[chain_hydra4]   skill_id=18230  level=4 operate_type=A2
        

        Now, run the Edit > Line Operations > Sort lines lexicographically Ascending N++ option

        skill_id=10022 level=1 skill_begin skill_name=[auto belt1] skill_id=10022  level=1 operate_type=P  magic
        skill_id=10023 level=1 skill_begin skill_name=[auto_belt2] skill_id=10023  level=1 operate_type=P  magic
        skill_id=10024 level=1 skill_begin skill_name=[auto_belt3] skill_id=10024  level=1 operate_type=P  magic
        skill_id=10025 level=1 skill_begin skill_name=[auto_belt4] skill_id=10025  level=1 operate_type=P  magic
        skill_id=18230 level=1 skill_begin skill_name=[chain_hydral]   skill_id=18230  level=1 operate_type=A2
        skill_id=18230 level=2 skill_begin skill_name=[chain_hydra2]   skill_id=18230  level=2 operate_type=A2
        skill_id=18230 level=3 sklll_begin skill_name=[chain_hydra3]   skill_id=18230  level=3 operate_type=A2
        skill_id=18230 level=4 skill_begin skill_name=[chain_hydra4]   skill_id=18230  level=4 operate_type=A2
        skill_id=22000 level=3 skill_begin skill_name=[br_s_item_herb_of_kimchi_power_a]   skill_id=22000  level=3
        skill_id=22001 level=4 sklll_begin skill_name=[br_s_item_herb_of_kimchi_power_b]   skill_id=22001  level=4
        skill_id=22002 level=4 skill_begin skill_name=[br_s_item_herb_of_kimchi_power_c]   skill_id=22002  level=4
        skill_id=22003 level=1 skill_begin skill_name=[br_s_item_herb_of_kimchi_time]  skill_id=22003  level=1
        skill_id=22004 level=1 skill_begin skill_name=[br_s_item_herb_of_ginseng_recovery] skill_id=22004  level=1
        skill_id=22004 level=7 skill_begin skill_name=[br_s_item_herb_of_ginseng_recovery] skill_id=22004  level=7
        skill_id=22004 level=8 skill_begin skill_name=[br_s_item_herb_of_ginseng_recovery] skill_id=22004  level=8
        skill_id=22004 level=9 skill_begin skill_name=[br_s_item_herb_of_ginseng_recovery] skill_id=22004  level=9
        skill_id=22005 level=2 skill_begin skill name=[br_s_item_herb_of_ginseng_vp_up]    skill_id=22005  level=2
        

        You can verify that all the lines :

        • Are first sorted by skill_id values ascending, then by level values ascending

        • And, for a same skill_id key, are sorted by level values ascending ( case of skill_id=22004 )


        Finally, run this final regex S/R, in order to delete the temporary leading keys :

        SEARCH (?x-is) ^ .+ (?= skill_begin )

        REPLACE Leave EMPTY

        And here is your expected OUTPUT text :

        skill_begin skill_name=[auto belt1] skill_id=10022  level=1 operate_type=P  magic
        skill_begin skill_name=[auto_belt2] skill_id=10023  level=1 operate_type=P  magic
        skill_begin skill_name=[auto_belt3] skill_id=10024  level=1 operate_type=P  magic
        skill_begin skill_name=[auto_belt4] skill_id=10025  level=1 operate_type=P  magic
        skill_begin skill_name=[chain_hydral]   skill_id=18230  level=1 operate_type=A2
        skill_begin skill_name=[chain_hydra2]   skill_id=18230  level=2 operate_type=A2
        skill_id=18230 level=3 sklll_begin skill_name=[chain_hydra3]   skill_id=18230  level=3 operate_type=A2
        skill_begin skill_name=[chain_hydra4]   skill_id=18230  level=4 operate_type=A2
        skill_begin skill_name=[br_s_item_herb_of_kimchi_power_a]   skill_id=22000  level=3
        skill_id=22001 level=4 sklll_begin skill_name=[br_s_item_herb_of_kimchi_power_b]   skill_id=22001  level=4
        skill_begin skill_name=[br_s_item_herb_of_kimchi_power_c]   skill_id=22002  level=4
        skill_begin skill_name=[br_s_item_herb_of_kimchi_time]  skill_id=22003  level=1
        skill_begin skill_name=[br_s_item_herb_of_ginseng_recovery] skill_id=22004  level=1
        skill_begin skill_name=[br_s_item_herb_of_ginseng_recovery] skill_id=22004  level=7
        skill_begin skill_name=[br_s_item_herb_of_ginseng_recovery] skill_id=22004  level=8
        skill_begin skill_name=[br_s_item_herb_of_ginseng_recovery] skill_id=22004  level=9
        skill_begin skill name=[br_s_item_herb_of_ginseng_vp_up]    skill_id=22005  level=2
        

        Now, just tell me how you would like your file sorted and if all your numbers contain the same number of digits

        See you later !

        Best Regards,

        guy038

        Z 1 Reply Last reply Jul 28, 2023, 3:44 PM Reply Quote 4
        • Z
          Zeus AS @guy038
          last edited by Jul 28, 2023, 3:44 PM

          This post is deleted!
          Z 2 Replies Last reply Jul 28, 2023, 3:46 PM Reply Quote 0
          • Z
            Zeus AS @Zeus AS
            last edited by Jul 28, 2023, 3:46 PM

            This post is deleted!
            1 Reply Last reply Reply Quote 0
            • Z
              Zeus AS @Zeus AS
              last edited by Jul 28, 2023, 3:47 PM

              This post is deleted!
              1 Reply Last reply Reply Quote -1
              • First post
                Last post
              The Community of users of the Notepad++ text editor.
              Powered by NodeBB | Contributors