• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 215
  • Last Modified:

Delete Multiple Line using linux command

Hi,

I have two .txt files which content email list ,
File one named : old.txt

That contains :
isbert@yahoo.com
laysod@gmail.com
gjebos@hotmail.com
sje2@admin2.com
mebes.dk@gmail.com
dojensu@ymail.com
ajs2u@hotmail.com

file two named : delete.txt
sje2@admin2.com
ajs2u@hotmail.com

What I need to ask if how can I delete the lines for old.txt using delete.txt pattern?
0
skywill
Asked:
skywill
2 Solutions
 
Kent OlsenData Warehouse Architect / DBACommented:
Hi skywill,

You can use any of at least a half dozen utility programs (awk, sed, grep, etc.) to do this.  Join works well, too.

Try this:

 join -v1 -v2 < (sort old.txt) < (sort delete.txt)


Good Luck!
Kent
0
 
skywillAuthor Commented:
what I need is when I run the command , the old.txt will have only left these email :

isbert@yahoo.com
laysod@gmail.com
gjebos@hotmail.com
mebes.dk@gmail.com
dojensu@ymail.com

so the the result is sje2@admin2.com and ajs2u@hotmail.com deleted from old.txt

do ur command work ?
0
 
Kent OlsenData Warehouse Architect / DBACommented:
Those commands will generate the results that you're looking for and write them to standard output.

Just redirect the output to the desired file.  You'll probably want to write the results to a temporary file, then copy that file back over old.txt

 join -v1 -v2 < (sort old.txt) < (sort delete.txt) > new.txt
 cp new.txt old.txt
0
 
Gerwin Jansen, EE MVETopic Advisor Commented:
grep -v -f delete.txt old.txt

(will use patterns from old.txt to find non-matching lines from delete.txt)

grep -v -f delete.txt old.txt  > new.txt

(new.txt will contain your filtered output)

grep -v -f delete.txt old.txt  > new.txt ; mv new.txt old.txt

(and rename new.txt to old.txt)
0
 
skullnobrainsCommented:
the proper use of join is :

$ sort old.txt > old.txt.sorted
$ sort delete.txt > delete.txt.sorted
$ join -a1 -v2 old.txt.sorted delete.txt.sorted
dojensu@ymail.com
gjebos@hotmail.com
isbert@yahoo.com
laysod@gmail.com
mebes.dk@gmail.com

---

this is much simpler and does not change the order of the addresses nor spend time sorting them

$ grep -v -f delete.txt old.txt
isbert@yahoo.com
laysod@gmail.com
gjebos@hotmail.com
mebes.dk@gmail.com
dojensu@ymail.com
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now