removing duplicate lines while maintaing coherence with second file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting removing duplicate lines while maintaing coherence with second file
# 1  
Old 08-09-2011
removing duplicate lines while maintaing coherence with second file

So I have two files. The first file, file1.txt, has lines of numbers separated by commas.

file1.txt
Code:
10,2,30,50
22,6,3,15,16,100
73,55
78,40,33,30,11
73,55
99,82,85
22,6,3,15,16,100

The second file, file2.txt, has sentences.

file2.txt
Code:
"the cat is fat"
"I like eggs"
"fish live in water"
"the moon is made of cheese"
"fish have houses in the water"
"the cake is a lie"
"I like my eggs scrambled"

What I would like to do is remove the duplicate lines from file1.txt, the file with the numbers, but at the same time remove the equivalent line from file2.txt.

In other words: If line 5 from file1.txt is removed because it is a duplicate, then line 5 from file2.txt should also be removed.

I know that
Code:
awk '!x[$0]++' file1.txt > file1.txt.new

will work for removing duplicates, but it does not provide coherence with file2.txt.

thanks for the help in advance

Last edited by Scott; 08-09-2011 at 04:48 PM.. Reason: Added code tags to file[12].txt
# 2  
Old 08-09-2011
It's not clear, exactly, what output should be given, so here goes!

Code:
$ paste -d\| file1.txt file2.txt | sort -uk1,1 | awk -F\| '{print $2}'
"the cat is fat"
"I like eggs"
"fish live in water"
"the moon is made of cheese"
"the cake is a lie"

# 3  
Old 08-09-2011
This should work:
Code:
awk 'NR==FNR{if(!x[$0]++)print; y[NR]=x[$0]; next}y[FNR]==1' file1.txt file2.txt

# 4  
Old 08-09-2011
To manipulate both files at the same time, try:
Code:
awk '{getline l<f}!x[$0]++{print l>fnew;print}' f=file2.txt fnew=file2.txt.new file1.txt > file1.txt.new


Last edited by Scrutinizer; 08-09-2011 at 06:22 PM..
This User Gave Thanks to Scrutinizer For This Post:
# 5  
Old 08-09-2011
Sweet, it works now. Thanks for the quick replies.
# 6  
Old 08-09-2011
Quote:
Originally Posted by scottn
It's not clear, exactly, what output should be given, so here goes!

Code:
$ paste -d\| file1.txt file2.txt | sort -uk1,1 | awk -F\| '{print $2}'
"the cat is fat"
"I like eggs"
"fish live in water"
"the moon is made of cheese"
"the cake is a lie"

Nice solution, but you missed an option "-t\|" in your sort.
# 7  
Old 08-10-2011
I agree that it's a nice solution. However, if the first file's content is as advertised (comma-delimited numbers), there's really no need to specify an alternate delimiter; the default \t suffices.

Code:
paste file1.txt file2.txt | sort -uk1,1 | cut -f2-

Regards,
Alister
This User Gave Thanks to alister For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Removing duplicate lines on first column based with pipe delimiter

Hi, I have tried to remove dublicate lines based on first column with pipe delimiter . but i ma not able to get some uniqu lines Command : sort -t'|' -nuk1 file.txt Input : 38376KZ|09/25/15|1.057 38376KZ|09/25/15|1.057 02006YB|09/25/15|0.859 12593PS|09/25/15|2.803... (2 Replies)
Discussion started by: parithi06
2 Replies

2. Homework & Coursework Questions

Script: Removing HTML tags and duplicate lines

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: You will write a script that will remove all HTML tags from an HTML document and remove any consecutive... (3 Replies)
Discussion started by: tburns517
3 Replies

3. UNIX for Dummies Questions & Answers

Removing a set of Duplicate lines from a file

Hi, How do i remove a set of duplicate lines from a file. My file contains the lines: abc def ghi abc def ghi jkl mno pqr jkl mno (1 Reply)
Discussion started by: raosr020
1 Replies

4. Shell Programming and Scripting

Removing a block of duplicate lines from a file

Hi all, I have a file with the data 1 abc 2 123 3 ; 4 rao 5 bell 6 ; 7 call 8 abc 9 123 10 ; 11 rao 12 bell 13 ; (10 Replies)
Discussion started by: raosr020
10 Replies

5. Shell Programming and Scripting

Removing Duplicate Lines per Section

Hello, I am in need of removing duplicate lines from within a file per section. File: ABC1 012345 header ABC2 7890-000 ABC3 012345 Header Table ABC4 ABC5 593.0000 587.4800 ABC5 593.5000 587.6580 <= dup need to remove ABC5 593.5000 ... (5 Replies)
Discussion started by: petersf
5 Replies

6. Shell Programming and Scripting

Removing duplicates from string (not duplicate lines)

please help me in getting following: Input Desired output x="foo" foo x="foo foo" foo x="foo foo" foo x="foo abc foo" foo abc x="foo foo1 foo2" foo foo1 foo2 I need to remove duplicated from string.. (8 Replies)
Discussion started by: vickylife
8 Replies

7. Shell Programming and Scripting

removing the duplicate lines in a file

Hi, I need to concatenate three files in to one destination file.In this if some duplicate data occurs it should be deleted. eg: file1: ----- data1 value1 data2 value2 data3 value3 file2: ----- data1 value1 data4 value4 data5 value5 file3: ----- data1 value1 data4 value4 (3 Replies)
Discussion started by: Sharmila_P
3 Replies

8. Shell Programming and Scripting

removing duplicate blank lines

Hi, how to remove the blank lines from the file only If we have more than one blank line. thanks rameez (8 Replies)
Discussion started by: rameezrajas
8 Replies

9. UNIX for Dummies Questions & Answers

removing duplicate lines from a file

Hi, I am trying to remove duplicate lines from a file. For example the contents of example.txt is: this is a test 2342 this is a test 34343 this is a test 43434 and i want to remove the "this is a test" lines only and end up with the numbers in the file, that is, end up with: 2342... (4 Replies)
Discussion started by: ocelot
4 Replies

10. UNIX for Dummies Questions & Answers

Removing duplicate lines ignore case

hi, I have the following input in file: abc ab a AB b c a C B When I use uniq -u file,the out put file is: abc ab AB c v B C (17 Replies)
Discussion started by: hellsd
17 Replies
Login or Register to Ask a Question