Find string in list with wildcards


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Find string in list with wildcards
# 1  
Old 06-25-2009
Find string in list with wildcards

I need to add code to a shell script to find out if a string matches any item in a list, where the list can contain a wildcard character.

For example, if I have the following list:
ok_versions="03-02-4, 04-01-*"

Then I want to compare a particular string to see if it matches any item in the list. For example, I could have a string like the following
my_version="04-01-2".

I want to check my_version against ok_versions, and note that my_version is ok if it is 03-02-4, 04-01-1, 04-01-2, etc., but that it is not ok if it doesn't match one of the patterns. The ok_versions list could have any number of entries (not just two).

I am new to shell scripting and would really appreciate anyone who can solve this problem for me.

Thanks!
# 2  
Old 06-25-2009
Code:
#!/bin/ksh
#set -x

my_version='04-01-2'

if [[ ${my_version} = +(04-01-*|03-02-4) ]]; then
   echo match
else
   echo no match
fi

a better question is ... why this does not work..
Anybody? This is on Solaris....
Code:
#!/bin/ksh
set -x

ok_versions="04-01-*|03-02-4"

my_version='04-01-2'

if [[ ${my_version} = +(${ok_versions}) ]]; then
   echo match
else
   echo no match
fi


Last edited by vgersh99; 06-25-2009 at 06:03 PM..
# 3  
Old 06-25-2009
I'm only going to guess (and it's probably not a good guess) that the ksh88 on Solaris is "older" (read as slightly different) than the ksh88 on whatever "nix you compared it to.

The ksh on AIX is not the same as on Solaris. There are subtle, but very minor differences (all of which I have momentarily - and somewhat conveniently forgotten!)
# 4  
Old 06-25-2009
I am working with a /bin/sh script file on a Linux nemi 2.4.25 PPC system.
# 5  
Old 06-25-2009
Quote:
Originally Posted by scottn
I'm only going to guess (and it's probably not a good guess) that the ksh88 on Solaris is "older" (read as slightly different) than the ksh88 on whatever "nix you compared it to.

The ksh on AIX is not the same as on Solaris. There are subtle, but very minor differences (all of which I have momentarily - and somewhat conveniently forgotten!)
Do you have access to AIX? Could you try it, please.
It does not work with '/usr/xpg4/bin/sh' either ........

---------- Post updated at 05:32 PM ---------- Previous update was at 05:31 PM ----------

Quote:
Originally Posted by Johan III
I am working with a /bin/sh script file on a Linux nemi 2.4.25 PPC system.
Your '/bin/sh' on Linux might actually be ksh or bash 'in disguise' - try it.
# 6  
Old 06-25-2009
Hi Johan,

If you used vger's solution then you were really using ksh, if just for a moment!

vger... I don't have access to AIX at the moment... I'm home and only have Solaris, Linux. I can't afford to have AIX at home! But I'll check it tomorrow (out of interest).
# 7  
Old 06-25-2009
I tried vger's solution, but got the following errors:

syntax error in conditional expression: unexpected token `('
syntax error near `+($'
` if [[ ${my_version} = +(${ok_versions}) ]]; then'

I get the same kind of errors if I replace ok_versions with the string list in the if statement.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Find string in file and find the all records by string

Hello I would like to get know how to do this: I got a big file (about 1GB) and I need to find a string (for instance by grep ) and then find all records in this file based on a string. Thanks for advice. Martin (12 Replies)
Discussion started by: mape
12 Replies

2. UNIX for Dummies Questions & Answers

Find command and use of wildcards

greetings, below is the find command i am using for some filesystem maintenance: find /data/Engine \( -type d -name .snapshot -prune -o -type d -wholename "/data/Engine/*/CAE" \ -prune -o -type d -wholename "/data/Engine/*/CAD" -prune -o -name ".*.case" \)\ -mtime +365 -print0 -fls... (5 Replies)
Discussion started by: crimso
5 Replies

3. Shell Programming and Scripting

Grep string in files and list file names that contain the string

Hi, I have a list of zipped files. I want to grep for a string in all files and get a list of file names that contain the string. But without unzipping them before that, more like using something like gzcat. My OS is: SunOS test 5.10 Generic_142900-13 sun4u sparc SUNW,SPARC-Enterprise (8 Replies)
Discussion started by: apenkov
8 Replies

4. UNIX for Dummies Questions & Answers

[Solved] Wildcards used in find, ls and grep commands

Platforms : Solaris 10 and RHEL 5.6 I always get double quotes , single quotes and asteriks mixed up for find, ls and grep commands. The below commands retrieve the correct results. But , unders stress , I get all these mixed up :mad: .So, i wanted to get a clear picture. Please check if... (7 Replies)
Discussion started by: John K
7 Replies

5. UNIX for Dummies Questions & Answers

Find the list of filenames that have the string 31 at 4th and 5th position

Hi, Can anyone let me know the command to know the list of filenames that have string 31 in their 4th and 5th positions inside the file: grep -l "31" main*.txt The above grep lists all the files which have 31 at any position but I want filenames having 31 at position 4 and position 5. (8 Replies)
Discussion started by: okkadu
8 Replies

6. Shell Programming and Scripting

find string(s) in text file and nearby data, export to list help

Hi, So I'm kinda new to shell scripts and the like. I've picked up quite a bit of use from browsing the forums here but ran into a new one that I can't seem to find an answer for. I'm looking to parse/find a string AND the next 15 or so charachters that follow the string within a text file... (1 Reply)
Discussion started by: kar23me
1 Replies

7. Linux

Find String in FileName and move the String to new File if not found

Hi all, I have a question.. Here is my requirement..I have 500 files in a path say /a/b/c I have some numbers in a file which are comma seperated...and I wanted to check if the numbers are present in the FileName in the path /a/b/c..if the number is there in the file that is fine..but if... (1 Reply)
Discussion started by: us_pokiri
1 Replies

8. Homework & Coursework Questions

Need help using find or locate with wildcards

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: List all files in ~c12100 directory beginning with "BOZO" that end with either "123" or "456" 2. Relevant... (3 Replies)
Discussion started by: ScarletRavin
3 Replies

9. Shell Programming and Scripting

Help to find string and return following characters from list of files

Hi, I'm fairly new to UNIX, but hopefully some-one can help me with this: I am using the following code to find files with the name "example.xml": find . -name "example.xml" -print that would print me a list like the example here: ./dir1/dir2/example.xml... (5 Replies)
Discussion started by: boijie
5 Replies

10. Shell Programming and Scripting

Help--Using wildcards in string comparison

Hi, I want to compare two strings using wild cards. In the file run_test i have if ; then cp ../stimulus/default_value.in ../log/$1.log fi When I issue the command run_test i2c_default_test in the command line, the cp command is not executed. Whereas if i give the following code,... (2 Replies)
Discussion started by: deepae
2 Replies
Login or Register to Ask a Question