Pattern matching question


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Pattern matching question
# 1  
Old 04-19-2011
Pattern matching question

Hi Guys,
I am trying to setup a check for the string using an "if" statement. The valid entry is only the one which contain Numbers and Capital Alpha-Numeric characters, for example: BA6F, BA6E, BB21 etc...
I am using the following "if" constract to check the input, but it fails allowing Small Alpha-Numeric characters:

Code:
ex_byte=bb21
if [[ ${ex_byte} != +([A-Z0-9]) ]]; then
    echo "Error"
fi

The above "if" does not work for some reason, allowing small Alpha-Numeric characters and does not print "Error"

Does anyone know how to make sure that only numbers and Capital Alpha-Numeric characters pass and for the rest the "Error" is reported.
Thanks a lot for advice.

Moderator's Comments:
Mod Comment Please use [code] and [/code] tags when posting code, data or logs etc. to preserve formatting and enhance readability, thanks.

Last edited by zaxxon; 04-19-2011 at 10:40 AM.. Reason: code tags
# 2  
Old 04-19-2011
Tbh, I am not sure if this can be written alike in a test. The "usual" way checking things like this might be in case/esac:

Code:
#!/usr/bin/ksh

while read I; do
        case $I in
                +([A-Z0-9]))    echo "ok";;
                *)              echo "err";;
        esac
done

exit 0

Btw., having so many posts, you should be familiar using code tags. You got a 2nd PM now with instructions how and when to use them. If there is something not clear, ask. Else I guess you are just ignoring them.
# 3  
Old 04-19-2011
Code:
 
read STR
if [[ $STR = +([A-Z0-9]) ]] ; then
echo "Fine"
else
echo "error"
fi

# 4  
Old 04-19-2011
Code:
#!/bin/bash
# bash 3.2+
ex_byte=bb32
if [[ $ex_byte =~ [a-z] ]];then
    echo "Not ok"
elif [[ $ex_byte =~ [A-Z]+[0-9]+|[0-9]+[A-Z]+ ]]  ; then
    echo "ok"
fi

---------- Post updated at 09:15 AM ---------- Previous update was at 09:15 AM ----------

Code:
#!/bin/bash
# bash 3.2+
ex_byte=bb32
if [[ $ex_byte =~ [a-z] ]];then
    echo "Not ok"
elif [[ $ex_byte =~ [A-Z]+[0-9]+|[0-9]+[A-Z]+ ]]  ; then
    echo "ok"
fi

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bash pattern matching question

I need to check the condition of a variable before the script continues and it needs to match a specific pattern such as EPS-03-0 or PDF-02-1. The first part is a 3 or 4 letter string followed by a hyphen, then a 01,02 or 03 followed by a hyphen then a 0 or a 1. I know I could check for every... (4 Replies)
Discussion started by: stormcel
4 Replies

2. UNIX for Dummies Questions & Answers

Perl Pattern Matching Question

Hi all, I have a pattern matching problem in which i'm not sure how to attack. Here is my problem: I have a list of strings that appear in the following format: String: LE_(1234 ABC)^2^ABC^DEFG What i need to do is replace all the characters after the first ^ with blank. So the output... (2 Replies)
Discussion started by: WongSifu
2 Replies

3. Shell Programming and Scripting

pattern matching question

Hi guys I have the following case statement in my script: case $pn.$db in *?.fcp?(db)) set f ${pn} cp ;; *?.oxa?(oxa) ) set oxa $pn ;; esac Can somebody help me to understand how to interpret *?.fcp?(db)) or *?.oxa?(oxa) ? I cannot figure out how in this case pattern maching... (5 Replies)
Discussion started by: aoussenko
5 Replies

4. Shell Programming and Scripting

sed pattern matching question

I inherited a script that contains the following sed command: sed -n -e '/^.*ABCD|/p' $fileName | sed -e 's/^.*ABCD|//' | sed -e 's/|ABCD$//' > ${fileName}.tmp What I'm wondering is whether ABCD has a special pattern matching value in sed, such as a character class similar or identical to . ... (9 Replies)
Discussion started by: topmhat
9 Replies

5. Shell Programming and Scripting

pattern matching question

Hi Guys I am trying to check if the pattern "# sign followed by one or several tabs till the end of the line" exists in my file. I am using the following query: $ cat myfile | nawk '{if(/^#\t*$/) print "T"}' Unfortunately it does not return the desired output since I know for sure that the line... (4 Replies)
Discussion started by: aoussenko
4 Replies

6. Shell Programming and Scripting

pattern matching question

Hi guys, I have a file in the following format: 4222 323K 323L D222 494 8134 A023 A024 49 812A 9871 9872 492 A961 A962 A963 491 0B77 0B78 0B79 495 0B7A 0B7B 0B7C 4949 WER9 444L 999O I need to grep the line... (5 Replies)
Discussion started by: aoussenko
5 Replies

7. Shell Programming and Scripting

Pattern matching question

Hi, I am writing a simple log parsing system and have a question on pattern matching. It is simply grep -v -f patterns.re /var/log/all.log Now, I have the following in my logs Apr 16 07:33:17 ad-font-dc1 EvntSLog: AD-FONT-DC1/NTDS ISAM (700) - "NTDS (384) NTDSA: Online defragmentation... (5 Replies)
Discussion started by: wpfontenot
5 Replies

8. Shell Programming and Scripting

SED Question: Search and Replace start of line to matching pattern

Hi guys, got a problem here with sed on the command line. If i have a string as below: online xx:wer:xcv: sdf:/asdf/http:https-asdfd How can i match the pattern "http:" and replace the start of the string to the pattern with null? I tried the following but it doesn't work: ... (3 Replies)
Discussion started by: DrivesMeCrazy
3 Replies

9. Shell Programming and Scripting

Pattern matching question

Hi guys, I have the following expression : typeset EXBYTEC_CHK=`egrep ^"+${PNUM}" /bb/data/firmexbytes.dta` can anybody please explain to me what ^"+${PNUM}" stands for in egrep statement? Thanks -A (3 Replies)
Discussion started by: aoussenko
3 Replies

10. Shell Programming and Scripting

pattern matching + perl question

i can only find the first occurance of a pattern how do i set it to loop untill all occurances have changed. #! /usr/bin/perl use POSIX; open (DFH_FILE, "./dfh") or die "Can not read file ($!)"; foreach (<DFH_FILE>) { if ($_ !~ /^#|^$/) { chomp; ... (1 Reply)
Discussion started by: Optimus_P
1 Replies
Login or Register to Ask a Question