This feels like it should already be a feature in a terminal. But I didn’t find anything that let me do this efficiently.

I had a rust library for converting list like 1-4,8-10 into vectors, but thought I’d expand it into a command line command as well, as it is really useful when I want to run batch commands in parallel using templates.

I wanted to share it since it might be a useful simple command for many people.

  • rrconkle
    link
    fedilink
    English
    arrow-up
    7
    ·
    4 months ago

    Bash can do discontinuous ranges

    $ echo {{1..3},{7..8}}
    1 2 3 7 8
    
    • thevoidzero@lemmy.worldOP
      link
      fedilink
      arrow-up
      2
      ·
      4 months ago

      Thank you. I did think there might be a way.

      My program is basically doing printf "%d\n" {{1..3},{7..8}} in that case. Can bash do step? like 1:2:10 would be 1,3,5,7,9

      • rrconkle
        link
        fedilink
        English
        arrow-up
        4
        ·
        4 months ago

        Yes, just give the step as the third number: {1..10..2}

        • thevoidzero@lemmy.worldOP
          link
          fedilink
          arrow-up
          1
          ·
          4 months ago

          {1…10…2}

          Wow, that’s nice to know. I guess my program will at least make it easier since you can type it in a more humane way, but not essential.

          • 69420@lemmy.world
            link
            fedilink
            English
            arrow-up
            1
            ·
            4 months ago

            There’s also seq:

            $ seq 1 2 10
            

            This will print the numbers starting from 1, incrementing by 2 until you get to 10.

            • thevoidzero@lemmy.worldOP
              link
              fedilink
              arrow-up
              1
              ·
              4 months ago

              Seq will only print one sequence, though. The program’s focus is discontinuous range. Something like: 1:2:10,20:2:30