Regular expression help


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Regular expression help
# 8  
Old 01-18-2013
Quote:
Originally Posted by radoulov
Give an example, please. They were most probably valid as shell patterns too.
Sorry I meant the regular expression from my code above.

It almost works but as soon as I add the ? it no longer picks up the numbers 1.1, 1.2 etc as valid. If I dont have the question mark things seem to work but it wont except just a single digit as a valid version number which is what I want. Some examples of what I want valid are below as well as the latest code.

Code:
1 valid
1.1 valid
1.12 valid
12.1 valid
1...1 invalid
1a invalid
1.1a invalid


Code:
while true
do
        print -- "Please enter the version number"
        read version
        echo "${version}" |grep "^[0-9]*\.?[0-9]$" >/dev/null
        if [[ $? != 0 ]]
                then
                print -- "Version is not a number"
        else
        break
        fi
done


Last edited by radoulov; 01-18-2013 at 10:08 AM.. Reason: Use code tags, please!
# 9  
Old 01-18-2013
Sorry, you should use \? in BRE. Otheriwse use grep -E/egrep.
From the manual pages of grep:

Quote:
Basic vs Extended Regular Expressions
In basic regular expressions the meta-characters ?, +, {, |, (, and ) lose their special meaning; instead
use the backslashed versions \?, \+, \{, \|, \(, and \).

Last edited by radoulov; 01-18-2013 at 10:28 AM.. Reason: Corrected.
# 10  
Old 01-18-2013
Quote:
Originally Posted by radoulov
Sorry, you should use \? in BRE. Otheriwse use grep -E/egrep.
From the manual pages of grep:
Sorry, I still get the same result. Smilie
# 11  
Old 01-18-2013
Quote:
Originally Posted by frodo61
Sorry, I still get the same result. Smilie
OK, some grep implementations support only limited regular expressions (/usr/bin/grep on Solaris, for example),
but .? (note, there is no backslash before the ?) should work with egrep.
Did you try it?
This User Gave Thanks to radoulov For This Post:
# 12  
Old 01-18-2013
Quote:
Originally Posted by radoulov
OK, some grep implementations support only limited regular expressions (/usr/bin/grep on Solaris, for example),
but .? (note, there is no backslash before the ?) should work with egrep.
Did you try it?
Brilliant, this has done the trick. Thanks so much for your help. Maybe in 20 years I might have learnt all these differences but probaly not Smilie
# 13  
Old 01-18-2013
Quote:
Originally Posted by frodo61
Brilliant, this has done the trick. Thanks so much for your help. Maybe in 20 years I might have learnt all these differences but probaly not Smilie
As you see, I'm using shell scripting every day but I often forget the details too Smilie
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Regular expression

I would like to extract "JDBC Thin Client" from (PROGRAM=JDBC Thin Client); and "C:\Python26\python.exe" from (PROGRAM=C:\Python26\python.exe); "txm_v_awsrf_db.pr" from (PROGRAM=txm_v_awsrf_db.pr). if input line like "(PROGRAM=)", it return unknown. Would you help suggest a regular... (4 Replies)
Discussion started by: cstsang
4 Replies

2. Shell Programming and Scripting

Regular expression

Can someone please explain me what does this mean? ^{1,50}$ (1 Reply)
Discussion started by: Anupam_Halder
1 Replies

3. UNIX for Advanced & Expert Users

sed: -e expression #1, char 0: no previous regular expression

Hello All, I'm trying to extract the lines between two consecutive elements of an array from a file. My array looks like: problem_arr=(PRS111 PRS213 PRS234) j=0 while } ] do k=`expr $j + 1` sed -n "/${problem_arr}/,/${problem_arr}/p" problemid.txt ---some operation goes... (11 Replies)
Discussion started by: InduInduIndu
11 Replies

4. UNIX for Dummies Questions & Answers

regular expression help

\..\ {3\}$ which one of these does this match rs.ef$tt abc.ab abc.$$$$ abc I think its the 1st one what do you think? Thanks Please use code tags! (2 Replies)
Discussion started by: drew211
2 Replies

5. Programming

Perl: How to read from a file, do regular expression and then replace the found regular expression

Hi all, How am I read a file, find the match regular expression and overwrite to the same files. open DESTINATION_FILE, "<tmptravl.dat" or die "tmptravl.dat"; open NEW_DESTINATION_FILE, ">new_tmptravl.dat" or die "new_tmptravl.dat"; while (<DESTINATION_FILE>) { # print... (1 Reply)
Discussion started by: jessy83
1 Replies

6. Shell Programming and Scripting

Integer expression expected: with regular expression

CA_RELEASE has a value of 6. I need to check if that this is a numeric value. if not error. source $CA_VERSION_DATA if * ] then echo "CA_RELESE $CA_RELEASE is invalid" exit -1 fi + source /etc/ncgl/ca_version_data ++ CA_PRODUCT_ID=samxts ++ CA_RELEASE=6 ++ CA_WEEK_NO=7 ++... (3 Replies)
Discussion started by: ketkee1985
3 Replies

7. UNIX for Dummies Questions & Answers

ls with regular expression

I currently list and sort all the files in a directory which begin with an Upper Case C and end with the extension '#finished#'. Here is the command I use: ls -tr $currentDir/*.#finished# what i need to do now is list all the files in a directory that begin with upper case C and end... (3 Replies)
Discussion started by: rkgudde
3 Replies

8. Linux

Regular expression to extract "y" from "abc/x.y.z" .... i need regular expression

Regular expression to extract "y" from "abc/x.y.z" (2 Replies)
Discussion started by: rag84dec
2 Replies

9. Programming

What does the regular expression ['(^[^~]+~).*'] mean?

What does the regular expression +~).*'] mean while using it with regexec.When the string "RCHNUSNT35C~rs07/ASM-RS07" is used with the regular expression +~).*'] regexec gives an error. I know what regexec does,but i do not understand what this expression means wrt to this string... any help... (2 Replies)
Discussion started by: anupamar
2 Replies

10. Shell Programming and Scripting

Regular Expression + Aritmetical Expression

Is it possible to combine a regular expression with a aritmetical expression? For example, taking a 8-numbers caracter sequece and casting each output of a grep, comparing to a constant. THX! (2 Replies)
Discussion started by: Z0mby
2 Replies
Login or Register to Ask a Question