Bash pattern matching question


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Bash pattern matching question
# 1  
Old 08-18-2014
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 possible combination, but I was hoping there was an easier (and more scalable) way to proceed.

Thanks in advance for any help rendered.

first I just tried to check for the pattern and failed i.e.

Code:
 
if ( "$4" = "???(?)-[01-03]-[0-1]" ) ; then
echo "Matched" > testing
else 
echo "Mismatch" > testting
fi


I obviously don't know what I 'm doing.
# 2  
Old 08-19-2014
Lightbulb

Following should be the right regex: ^[A-Z]{3,4}-0[123]-[01]$
I guess you get the idea and can adapt it for your needs.

Code:
$ cat vars
EPS-03-0
ABAC-01-3
PDF-02-1
ZY-021-0
PERL-03-1
BASHH-01-0
XYZ-02-02
PNG-01-2
$

Code:
$ while read line
> do
>    if [[ "$line" =~ ^[A-Z]{3,4}-0[123]-[01]$ ]]; then
>      echo "match"
>    else
>      echo "mismatch"
>    fi
> done < vars
match
mismatch
match
mismatch
match
mismatch
mismatch
mismatch
$

# 3  
Old 08-19-2014
thank you so much for your quick reply, and it seems to be working perfectly!!!

but I'm curious and if you wouldn't mind answering a few questions I'm having trouble finding the answers on my own.

I understand that =~ allows for the regexp you use, but what are the purposes of the carat (^) and dollar ($) ? I thought the ^ meant 'not'.

thanks again
# 4  
Old 08-19-2014
In an RE, ^ matches the start of a line/string and $ matches the end of a line/string.
# 5  
Old 08-19-2014
thanks!!
you guys are the best!!!

saved me SO MUCH TIME!!!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

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

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

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

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

5. Shell Programming and Scripting

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... (3 Replies)
Discussion started by: aoussenko
3 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

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

9. Shell Programming and Scripting

bash script, pattern matching + sum

Hi guys, i have been struggling to achieve the following and therefor looking for some help. I am trying to write something that will summerize the following output from my switches for daily totals. Basicly if $1 $2 $3 doesnt change, we can keep adding up $4. Probably would use a awk print end... (3 Replies)
Discussion started by: Wratholix
3 Replies

10. Shell Programming and Scripting

Pattern matching in BASH

i have 255 files in a directory named 000po.k thru 255po.k and I want to copy all files except 3: exclude 000po.k, 166po.k,168po.k I know the long way around it copying these files, but am looking for a shorter way of doing this: my old approach: # copy 001po.k thru 009po.k to target... (3 Replies)
Discussion started by: zoo591
3 Replies
Login or Register to Ask a Question