Wildcard search in if loop


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Wildcard search in if loop
# 8  
Old 10-21-2013
greet_sed, you will notice that kumaar1986 is in the Bourne Shell, so your statement is not valid.

As a demo with my version (and using a case statement to neaten the options):-
Code:
$ ls       
abc1216    abc124     abckwefn   xyz116     xyz125     xyzwefwef
abc123     abc125     demo       xyz124     xyz129
$ cat demo 
#!/bin/sh
echo "\n\nSimple if\n"
for file in abc* ghi* xyz*
do
   testval="${file%${file##???}}"  
   if [ "$testval" = "abc" ];
   then
      echo "Found abc file $file"
   fi
   if [ "$testval" = "ghi" ];
   then
      echo "Found ghi file $file"
   fi
   if [ "$testval" = "xyz" ];
   then
      echo "Found xyz file $file"
   fi
done

echo "\n\nUsing a CASE statement\n"
for file in abc* ghi* xyz*
do
   testval="${file%${file##???}}"
   case "$testval" in
     abc) echo "Found abc file $file"   ;;
     ghi) echo "Found ghi file $file"   ;;
     xyz) echo "Found xyz file $file"   ;;
     *)   echo "Found other file $file" ;;
   esac
done

$ demo     


Simple if

Found abc file abc1216
Found abc file abc123
Found abc file abc124
Found abc file abc125
Found abc file abckwefn
Found xyz file xyz116
Found xyz file xyz124
Found xyz file xyz125
Found xyz file xyz129
Found xyz file xyzwefwef


Using a CASE statement

Found abc file abc1216
Found abc file abc123
Found abc file abc124
Found abc file abc125
Found abc file abckwefn
Found other file ghi*
Found xyz file xyz116
Found xyz file xyz124
Found xyz file xyz125
Found xyz file xyz129
Found xyz file xyzwefwef
$

You will notice that in the second part, the file ghi* seems to be listed. This is probably because it's actually getting a message about file not found, hence why having the *) clause for the case statement is a good idea. You may want to eith handle the error, ignore it or notify that expected input is missing.




Robin
These 2 Users Gave Thanks to rbatte1 For This Post:
# 9  
Old 10-21-2013
I cant post the exact data thats y i posted resampled test file names. i rechecked it again and im getting the same error. i tried your exact code and still getting the same error.
# 10  
Old 10-21-2013
@ rbatte1:
Thanks for pointing that.
@kumar:
Try with rbatte1 code if you are using sh instead of bash .
# 11  
Old 10-21-2013
@ rbatte1 thanks a lot. it worked finally. i will go through the code and learn my mistakes. greet_sed thanks a lot for your input. my fault !! i should have mentioned which script im using.
This User Gave Thanks to kumaar1986 For This Post:
# 12  
Old 10-21-2013
We are all here to learn - me just as much as anyone, so I'm happy to have my suggestions criticised and that works well too. I learn more from getting it wrong and having it pointed out.

Thanks for confirming that all is well.



Robin
# 13  
Old 10-21-2013
Code:
testval="${file%${file##???}}"

this code splits the first three letters in the file name. How to split the last 3 letters in the code. Im trying to modify the code so i can use the file extension
Code:
if[$testval= ".txt"]
do
echo some operation
done
else if [$testval=".xml"]
do
echo some operation
done

can u help me to achieve this operation.
The % and # markers are then followed by descriptions of how to split the line.
Is there any document to learn about how to do this. your help is appreciated
# 14  
Old 10-21-2013
Just reverse what you have:

Code:
testval="${file#${file%%???}}"

# works at the front of the string
% works at the end of the string
This User Gave Thanks to in2nix4life For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Loop with Perl (string search)

I am using a perl script to reverse and complement sequences if a string is found. The script works as expected as standalone but I would like to use it in my bash file. However, I am not getting my expected result. My test.txt file >Sample_72... (8 Replies)
Discussion started by: Xterra
8 Replies

2. Shell Programming and Scripting

Grep and BzGrep with Wildcard in Search Pattern

Hello All, I hope this is the right area. If not, Kindly let me know and I will report in the appropriate spot. I am needing to find a search pattern that will make the * act as Wildcard in the search pattern instead of being literal. The example I am using is bzgrep "to=<*@domain.com>"... (5 Replies)
Discussion started by: mancountry
5 Replies

3. Emergency UNIX and Linux Support

Waiting for wildcard filename to exists in while loop

Hi Experts, We are developing a script which will wait for the trigger file(with datetime in the trigger file name). But the problem is when I use 'while' loop to wait for the file, it waits for the filename with wilcard in it that is wait for 'Trigger*.done' file. :eek: Below is the script ... (4 Replies)
Discussion started by: Amey Joshi
4 Replies

4. Shell Programming and Scripting

Search a wildcard text in a file

Hi, I have a file(report.txt) that contains : 0 1 chk_uncov_data_assert 776 chk_uncov_data_assert : assert property (chk_uncov_data) 1 0 chk_data_assert 772 chk_data_assert : assert property (chk_data) 1 0 chk_data_cover ... (8 Replies)
Discussion started by: Anamika08
8 Replies

5. Shell Programming and Scripting

Speeding up search and replace in a for loop

Hello, I am using sed in a for loop to replace text in a 100MB file. I have about 55,000 entries to convert in a csv file with two entries per line. The following script works to search file.txt for the first field from conversion.csv and then replace it with the second field. While it works fine,... (15 Replies)
Discussion started by: pbluescript
15 Replies

6. Shell Programming and Scripting

Grep Wildcard search

How can i grep for a pattern with wildcard using grep? I want to identify all the lines that start with SAM and end in .PIPE IN.TXT SAM_HEADER.PIPE SAM_DETAIL.PIPE SAM_INVOICE.PIPE Can i do something like grep SAM*.PIPE IN.TXT (2 Replies)
Discussion started by: venky338
2 Replies

7. Shell Programming and Scripting

ksh(!93) for loop with wildcard and empty directory

I'm sure this is by design, but using something like for f in dir/* do echo $f done produces unexpected (to me) results if run against an empty directory. I'd have expected it to not execute the loop, but it actually calls it with f set to 'dir/*'. Now I know that I'm trying to protect... (2 Replies)
Discussion started by: spr00t
2 Replies

8. UNIX for Dummies Questions & Answers

how to search and list file with wildcard character

hi, I want to search all files in the current working direcotry and to print in comma (,) seperated output. But I have two patterns to search for. Files will be in ABC20100508.DAT format. Search should happen on the format (ABC????????.DAT) along with date(20100508). I can do a ls... (2 Replies)
Discussion started by: anandapani
2 Replies

9. Shell Programming and Scripting

use loop to search

Hi, I need to search through a file to find the last one occurence of my data. File1 is like this: sososo abc123 ssssss abc456 ssssss abc345 I need to loop through to identify the last occurence of "abc". So "abc345" is the record that I need. Can someone give me some ideas? (9 Replies)
Discussion started by: whatisthis
9 Replies

10. UNIX for Dummies Questions & Answers

Find wildcard .shtml files in wildcard directories and removing them- How's it done?

I'm trying to figure out how to build a small shell script that will find old .shtml files in every /tgp/ directory on the server and delete them if they are older than 10 days... The structure of the paths are like this: /home/domains/www.domain2.com/tgp/ /home/domains/www.domain3.com/tgp/... (1 Reply)
Discussion started by: Neko
1 Replies
Login or Register to Ask a Question