Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 204
  • 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

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

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