"Revision up" instead of version up


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers "Revision up" instead of version up
# 1  
Old 11-19-2019
"Revision up" instead of version up

I need to alter this script to work with a revision instead of a version.
RF_102_209_200_v001_r01.nk is the new format and I'll be revisioning up the r01 portion and not the v001.

Code:
 #!/bin/sh  

for file in "$@" 
do         
ext=${file##*.}         
base=${file%.*}         
num=${base##*v}         
zeroes=${num%%[!0]*}         
num=${num#$zeroes}  
num=$((num+1))         
base=${base%v*}         
new=$(printf '%sv%04d.%s' "$base" "$num" "$ext")         
cp -nv "$file" "$new"
 done

# 2  
Old 11-19-2019
What would be your approach, in light of the proposals you received on similar requests (Incremental numbering?, Alter existing script to work with longer file name, Versioning up a file with initials? )?

Last edited by RudiC; 11-19-2019 at 07:08 PM..
# 3  
Old 11-19-2019
Yes well, unfortunately, I don't get to keep up with this stuff as often as I'd like, since this isn't really part of my job. I took a stab at it but failed miserably. So rather than have my boss come over and ask what the f' I'm doing writing code instead of actually working, I asked here.
# 4  
Old 11-20-2019
Hey, I got lucky and worked it out myself. I thought it would be harder.


Code:
#!/bin/sh

for file in "$@"
do
        ext=${file##*.}
        base=${file%.*}
        num=${base##*[r_]}
        base=${base%$num}
        num=$((10#$num+1))
        new=$(printf '%s%02d.%s' "$base" "$num" "$ext")
        cp -nv "$file" "$new"
done

# 5  
Old 11-20-2019
Very good indeed. If you can run the script with bash, try also
Code:
IFS="_."
for file in *.nk
  do    read A B C D V R X <<< $file
        printf "%s_%s_%s_%s_%s_r%02d.%s\n" $A $B $C $D $V $((10#${R#r} + 1)) $X
  done
RF_102_209_200_v001_r02.nk

or
Code:
IFS="_."
for file in *.nk
  do    ARR=( $file )
        printf "%s_%s_%s_%s_%s_r%02d.%s\n" ${ARR[0]} ${ARR[1]} ${ARR[2]} ${ARR[3]} ${ARR[4]} $((10#${ARR[5]#r} + 1)) ${ARR[6]}
  done
 RF_102_209_200_v001_r02.nk

Don't forget to reset IFS to its original value.


If all your file names are set to the positional parameters, try
Code:
IFS=$'\n'
while IFS="_." read A B C D V R X
  do    printf "cp %s_%s_%s_%s_%s_%s.%s %s_%s_%s_%s_%s_r%02d.%s\n" $A $B $C $D $V $R $X $A $B $C $D $V $((10#${R#r} + 1)) $X
  done <<< "$*"
cp RF_102_209_200_v001_r01.nk RF_102_209_200_v001_r02.nk
cp RF_102_209_200_v001_r04.nk RF_102_209_200_v001_r05.nk




and pipe the output into your shell...

Last edited by RudiC; 11-20-2019 at 05:49 PM..
# 6  
Old 11-20-2019
Wow. I like the look of those.

They seem like they'd be much easier to edit being that we're just calling each piece of the file a different variable.

I don't completely understand it yet, but I'll do more research and try to figure out what exactly is happening.


Thank you.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies

2. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

3. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

4. UNIX for Dummies Questions & Answers

What is the significance of sh -s in ssh -qtt ${user}@${host} "sh -s "${version}"" < test.sh?

Please can you help me understand the significance of providing arguments under sh -s in > ssh -qtt ${user}@${host} "sh -s "${version}"" < test.sh (4 Replies)
Discussion started by: Sree10
4 Replies

5. Solaris

The slices "usr", "opt", "tmp" disappeared!!! Help please.

The system don't boot. on the screen appears following: press enter to maintenance (or type CTRL-D to continue)...I checked with format command. ... the slices "0-root","1-swap","2-backup" exist. ...the slises "3-var","6-usr" -unassigned. :( (16 Replies)
Discussion started by: wolfgang
16 Replies

6. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

7. AIX

"pconsole" and "esaadmin" on AIX version 6

Anyone know what is the function of user "pconsole" and "esaadmin" on AIX version 6? (1 Reply)
Discussion started by: ebab3
1 Replies

8. Solaris

Who has "Solaris 10 Advanced System Administration(SA-202-S10)" latest revision doc?

Dear All, I am going to examine SA202 but I got SA-202-S10 revision A.1 so it might be out of date. Who has "Solaris 10 Advanced System Administration(SA-202-S10)" latest revision document? Could you share it ? Thank you in advance (2 Replies)
Discussion started by: unitipon
2 Replies

9. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
Login or Register to Ask a Question