Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3602328
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 18, 20262026-05-18T20:43:57+00:00 2026-05-18T20:43:57+00:00

I would like to know how to bump the last digit in a version

  • 0

I would like to know how to bump the last digit in a version number using bash.

e.g.

VERSION=1.9.0.9
NEXT_VERSION=1.9.0.10

EDIT: The version number will only contain natural numbers.

Can the solution be generic to handle any number of parts in a version number.

e.g.

1.2
1.2.3
1.2.3.4
1.2.3.4.5
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-18T20:43:58+00:00Added an answer on May 18, 2026 at 8:43 pm

    TL;DR:

    VERSION=1.9.0.9
    echo $VERSION | awk -F. '/[0-9]+\./{$NF++;print}' OFS=.
    # will print 1.9.0.10
    

    For a detailed explanation, read on.


    Let’s start with the basic answer by froogz3301:

    VERSIONS="
    1.2.3.4.4
    1.2.3.4.5.6.7.7
    1.9.9
    1.9.0.9
    "
    
    for VERSION in $VERSIONS; do 
        echo $VERSION | awk -F. '{$NF = $NF + 1;} 1' | sed 's/ /./g'
    done
    

    How can we improve on this? Here are a bunch of ideas extracted from the copious set of comments.

    The trailing ‘1’ in the program is crucial to its operation, but it is not the most explicit way of doing things. The odd ‘1’ at the end is a boolean value that is true, and therefore matches every line and triggers the default action (since there is no action inside braces after it) which is to print $0, the line read, as amended by the previous command.

    Hence, why not this awk command, which obviates the sed command?

    awk -F. '{$NF+=1; OFS="."; print $0}'
    

    Of course, we could refine things further — in several stages. You could use the bash ‘<<<‘ string redirection operator to avoid the pipe:

    awk -F. '...' <<< $VERSION
    

    The next observation would be that given a series of lines, a single execution of awk could handle them all:

    echo "$VERSIONS" | awk -F. '/[0-9]+\./{$NF+=1;OFS=".";print}'
    

    without the for loop. The double quotes around "$VERSION" preserve the newlines in the string. The pipe is still unnecessary, leading to:

    awk -F. '/[0-9]+\./{$NF+=1;OFS=".";print}' <<< "$VERSIONS"
    

    The regex ignores the blank lines in $VERSION by only processing lines that contain a digit followed by a dot. Of course, setting OFS in each line is a tad clumsy, and ‘+=1‘ can be abbreviated ‘++‘, so you could use:

    awk -F. '/[0-9]+\./{$NF++;print}' OFS=. <<< "$VERSIONS"
    

    (or you could include ‘BEGIN{OFS="."}‘ in the program, but that is rather verbose.

    The ‘<<<‘ notation is only supported by Bash and not by Korn, Bourne or other POSIX shells (except as a non-standard extension parallelling the Bash notation). The AWK program is going to be supported by any version of awk you are likely to be able to lay hands on (but the variable assignment on the command line was not supported by old UNIX 7th Edition AWK).

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I would like to know if I can open 2 different diagrams using MS
I would like know the limit of maximum number of rows that can be
I would like to know how I could get the number of processes for
I would like to know which dependency described in my pom.xml brings a transitive
I would like to know what semaphores, messageQueues, etc... are active in my vxWorks
I would like to know what kind of tool you use for writing your
I would like to know what's the best technique to do single sign-on in
I would like to know what would be the best way to do unit
I would like to know if there is any way to add custom behaviour
I would like to know your experience when you need to take over somebody

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.