Script for searching a pattern in 5 files and deleting the patterns given

Hi All,

I have written the below script that searches for the pattern in a file and delete them if present. please can some one have a look and suggest the changes in the script.

#!bin/sh

# The pattern that user want to add to the files

echo "Enter the pattern of the redirect"
read value

# check if the user has provided a valid pattern

if [-z "$value"] ; then
echo "You have not entered the pattern" ; exit 1

# If a pattern is entered by the User
# Searches the pattern and deletes the pattern if present in file (file 1) <filename 1>

mkdir /path/dred1
elif [grep "$value" <filename 1> > /path/dred1 && $? == 0] ; then
rm -r /path/dred1
echo "Pattern exist in <filename 1>"
sleep 1000
mkdir /path/olist
sed '/"$value"/d' <filename 1> > /path/olist
/path/olist > <filename 1>
rm -r /path/olist
echo "Pattern deleted"
else
rm -r /path/dred1
echo "Pattern does not exist in <filename 1>"
fi

# Pattern to be searched in (file 2) <filename 2> and delete it if present

mkdir /path/dred2
elif [grep "$value" <filename 2> > /path/dred2 && $? == 0] ; then
rm -r /path/dred2
echo "Pattern exist in <filename 2>"
sleep 1000
mkdir /path/olist
sed '/"$value"/d' <filename 2> > /path/olist
/path/olist > <filename 2>
rm -r /path/olist
echo "Pattern deleted"
else
rm -r /path/dred2
echo "Pattern does not exist in <filename 2>"
fi

# Pattern to be searched in (file 3) <filename 3> and delete it if present

mkdir /path/dred3
elif [ grep "$value" <filename 3> > /path/dred3 && $? == 0] ; then
rm -r /path/dred3
echo "Pattern exist in <filename 3>"
sleep 1000
mkdir /path/olist
sed '/"$value"/d' <filename 3> > /path/olist
/path/olist > <filename 3>
rm -r /path/olist
echo "Pattern deleted"
else
rm -r /path/dred3
echo "Pattern does not exist in <filename 3>"
fi

# Pattern to be searched in <filename 4> <filename 4> and delete it if present

mkdir /path/dred4
elif [grep "$value" <filename 4> > /path/dred4 && $? == 0] ; then
rm -r /path/dred4
echo "Pattern exist in <filename 4>"
sleep 1000
mkdir /path/olist
sed '/"$value"/d' <filename 4> > /path/olist
/path/olist > <filename 4>
rm -r /path/olist
echo "Pattern deleted"
else
rm -r /path/dred4
echo "Pattern does not exist in <filename 4>"
fi

# Pattern to be searched in <filename 5> <filename 5> and delete it if present

mkdir /path/dred5
elif [grep "$value" <filename 5> > /path/dred5 && $? == 0] ; then
rm -r /path/dred5
echo "Pattern exist in <filename 5>"
sleep 1000
mkdir /path/olist
sed '/"$value"/d' <filename 5> > /path/olist
/path/olist > <filename 5>
rm -r /path/olist
echo "Pattern deleted"
else
rm -r /path/dred5
echo "Pattern does not exist in <filename 5>"
fi

# Close loop for outer loop
fi

Next time use CODE-tags when posting code, data or logs to enhance readability and to preserve formatting like indention etc., ty.

Thanks and Regards,
Shazin

It should be easier if you post small samples of your input files and and explain what exactly you're trying to achieve.

Hi,

I am just trying to search for a word in a file and delete that complete line from the file if that word is present.

Cheers,
Shazin

---------- Post updated at 08:11 PM ---------- Previous update was at 08:06 PM ----------

Hi,

It can also be like this if we take it for a single file:

#!bin/sh

# The pattern that user want to add to the files

echo "Enter the pattern of the redirect"
read value

# check if the user has provided a valid pattern

if [-z "$value"] ; then
echo "You have not entered the pattern" ; exit 1

# If a pattern is entered by the User
# Searches the pattern and deletes the pattern if present in file (file 1) <filename 1>

mkdir /path/dred1
elif [grep "$value" <filename 1> > /path/dred1 && $? == 0] ; then
rm -r /path/dred1
echo "Pattern exist in <filename 1>"
sleep 1000
mkdir /path/olist
sed '/"$value"/d' <filename 1> > /path/olist
/path/olist > <filename 1>
rm -r /path/olist
echo "Pattern deleted"
else
rm -r /path/dred1
echo "Pattern does not exist in <filename 1>"
fi
fi

Please advise
Shazin

This seems to be a duplicate post of:

http://www.unix.com/shell-programming-scripting/115272-searching-pattern-file-deleting-th-ewhole-line-containing-pattern.html

Yes,
it is. Continue here.
Thread closed.