Need To Delete Lines Based On Search Criteria

Hi All,

I have following input file. I wish to retain those lines which match multiple search criteria. The search criteria is stored in a variable seperated from each other by comma(,).


SEARCH_CRITERIA = "REJECT, DUPLICATE" 

Input File:

ERROR,MYFILE_20130214_11387,9,37.75
REJECT,MYFILE_20130214_12486,1,20
DUPLICATE,MYFILE_20130214_12486,8,17.75
REJECT,MYFILE_20130214_14903,9,37.75
ERROR,MYFILE_20130214_17108,9,37.75
DUPLICATE,MYFILE_20130214_1811,0,0

My ouput file should look like below:

REJECT,MYFILE_20130214_12486,1,20
DUPLICATE,MYFILE_20130214_12486,8,17.75
REJECT,MYFILE_20130214_14903,9,37.75
DUPLICATE,MYFILE_20130214_1811,0,0

Thanks & Regards
Angshuman

SEARCH_CRITERIA="REJECT, DUPLICATE"

echo "$SEARCH_CRITERIA" | IFS=, read r d

awk -v R="$r" -v D="$d" '$0 ~ /^R/ || $0 ~ /^D/' file
awk -v sc=REJECT,DUPLICATE 'BEGIN{n=split(sc,a,/,/)}
{p=0;for(i=1;i<=n;i++) if(index($0,a)) {p=1;break}}p' infile

Another approach:

SEARCH_CRITERIA="REJECT,DUPLICATE"

echo "$SEARCH_CRITERIA" | awk -F, ' {
        for(i=1;i<=NF;i++)
                a[$i];
        } {
        while((getline line < "filename")>0) {
                split(line,L,",");
                if(L[1] in a)
                        print line;
        }
        close("filename");
}'