Regular expression, seemingly simple but


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Regular expression, seemingly simple but
# 1  
Old 03-07-2013
Regular expression, seemingly simple but

Hello,

I want to test a hour variable with an expression regular
The format is 00 01 02 03.......19 20 21 22 23
what follows in red doesn't work, it's clear 19 for example can't work.
Can you help me the right regular expression ?

Code:
case "$3" in
([0-2][0-3])
  # Nothing, OK !
  ;;
(*)
  echo 'Fatal, $3 = '"'$3'"', bad format' >&2
  #exit 1
  ;;

# 2  
Old 03-07-2013
Try it without the open bracket.

The format of a case statement (in ksh at least) is:

Code:
case $var in
   match1) Action ;;
   match2) Action ;;
   *)   Action ;;
esac

I hope that this helps.


Robin
Liverpool/Blackburn
UK
# 3  
Old 03-07-2013
Quote:
Originally Posted by amazigh42
Hello,

I want to test a hour variable with an expression regular
The format is 00 01 02 03.......19 20 21 22 23
what follows in red doesn't work, it's clear 19 for example can't work.
Can you help me the right regular expression ?

Code:
case "$3" in
([0-2][0-3])
  # Nothing, OK !
  ;;
(*)
  echo 'Fatal, $3 = '"'$3'"', bad format' >&2
  #exit 1
  ;;

To be pedantic: those patterns are not regular expressions. It's just sh pattern matching notation.

To be helpful: use multiple patterns.
Code:
case "$3" in
([01][0-9] | 2[0-3])
  # Nothing, OK !
  ;;
(*)
  echo 'Fatal, $3 = '"'$3'"', bad format' >&2
  #exit 1
  ;;

Regards,
Alister

---------- Post updated at 08:55 AM ---------- Previous update was at 08:52 AM ----------

Quote:
Originally Posted by rbatte1
Try it without the open bracket.

The format of a case statement (in ksh at least) is:

Code:
case $var in
   match1) Action ;;
   match2) Action ;;
   *)   Action ;;
esac

The opening parenthesis is typically omitted, but it is allowed, even on ksh.

Regards,
Alister
These 2 Users Gave Thanks to alister For This Post:
# 4  
Old 03-07-2013
That's me told then! Well, I'm happy to be corrected.

Robin
# 5  
Old 03-08-2013
Quote:
Originally Posted by alister
To be pedantic: those patterns are not regular expressions. It's just sh pattern matching notation.

To be helpful: use multiple patterns.
Code:
case "$3" in
([01][0-9] | 2[0-3])
  # Nothing, OK !
  ;;
(*)
  echo 'Fatal, $3 = '"'$3'"', bad format' >&2
  #exit 1
  ;;

Regards,
Alister

---------- Post updated at 08:55 AM ---------- Previous update was at 08:52 AM ----------



The opening parenthesis is typically omitted, but it is allowed, even on ksh.

Regards,
Alister
Thanks a lot Alister Smilie Super

---------- Post updated at 10:44 AM ---------- Previous update was at 04:00 AM ----------

Thanks

Last edited by amazigh42; 03-09-2013 at 01:43 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Seemingly simple sed, delete between matching lines

There are many matching blocks of text in one file that need to be deleted. This example below is one block that needs to be either deleted or replaced with an empty line. This text below is the input file. The ouput file should be empty Searching Checks. Based on search criteria name: Value :... (2 Replies)
Discussion started by: bash_in_my_head
2 Replies

2. 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

3. Shell Programming and Scripting

Simple regular expression

Hello, I don't understand why my regular expression doesn't work. simply I want to check a phone number of 8 digits doesn't start with 0 regex1='^({1})({7})$' if then ------ fi for example this number should be valid 12345678 and this 01234567 or 1234567 not ... (6 Replies)
Discussion started by: eng_asa
6 Replies

4. 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

5. Programming

Need Regular expression

Need regular expression to accept alphabets or numbers for first three places (1 Reply)
Discussion started by: dineshmurs
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. Shell Programming and Scripting

Regular expression Help

Hi What is the meaning of this in regular expression $k =~ s/^\s*//; Plz explain (3 Replies)
Discussion started by: Harikrishna
3 Replies

8. Shell Programming and Scripting

Need a regular expression

H3llo I need a regular expression to delete all my unused lines, for example: do not delete do not delete do not delete do not delete I tried something like the string below but it doesnt work sed '/ .*$//g' file > file2 Tony (4 Replies)
Discussion started by: tony3101
4 Replies

9. 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

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