SED Problem

I have a file with that contains a list of names ( exactly 1 name per line. no spaces)
I need a script to find a particular name in the file and remove the entire line.

ie

peter
joe
frank
pete
pearl

(sed script to remove pete)
peter
joe
frank
pearl

Part of my problem is that I can't figure out how to remove only pete (and not peter)

I tried this
search for the user called firstname
sed -e '/^firstname$/ d' > everyone.lis

This works.

Now I want to use a variable called name.
I tried

cat everyone.lis |sed -e '/^${name}$/ d' > everyone.lis

This did not work. Any suggestions ?
 

I'm not near a unix system right now, so I can't test it out, but try placing quotes (single or double) around your variable:

"$name"
 

The single quotes encapsulating your sed program prevents the shell from evaluating variables before it executes it. Change those to double-quotes, or in this case, you don't need any quotes.
Also, there is no advantage in using the extra cat process - just let sed read the file directly instead of a pipe.

And while you do not need braces around the variable in this case, it never hurts.

You will not be able to redirect your output back to your input file. The first thing the shell will do, before it invokes sed, is to create an empty output file, and that will wipe out your input file before sed gets to process it.

sed /^$name$/d everyone.lis > newfile
mv newfile everyone.lis
 

angle bracket testing ...
word in angle brackets:
< word >
backslashed left angle brackets:
\< word >
backslashed both angle brackets:
\< word \>
line1 line2 in angle brackets (two lines):
< line1
line2 >
end of test

See Also
Unix Administrator Career Path

Have a Unix Problem
Do you have a UNIX Question?

Unix Books :-
UNIX Programming, Certification, System Administration, Performance Tuning Reference Books

Return to : - Unix System Administration Hints and Tips

(c) www.gotothings.com All material on this site is Copyright.
Every effort is made to ensure the content integrity.  Information used on this site is at your own risk.
All product names are trademarks of their respective companies.
The site www.gotothings.com is in no way affiliated with or endorsed by any company listed at this site.
Any unauthorised copying or mirroring is prohibited.