Removing Duplicate Lines per Section


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Removing Duplicate Lines per Section
# 1  
Old 01-11-2010
Removing Duplicate Lines per Section

Hello,
I am in need of removing duplicate lines from within a file per section.

File:
Code:
 
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     587.6580
ABC5     594.0000     588.0971
ABC5     594.5000     588.5361
ABC1          67890 header
ABC2            1234-0001
ABC3      67890 Header Table
ABC4
ABC5     594.5000     588.5361  <= to keep in this section
ABC5     601.0000     594.1603
ABC5     601.5000     594.6121
ABC5     602.0000     595.0642
ABC5     602.0000     595.0642  <= dup need to remove
ABC1         345678 header

I need to remove duplicates from each section. Each section starts with ABC1 and all duplicates within that section need to be pushed into another file.

From my research within the forum, I have been working with the following command:
awk '/ABC1/ ( ABC1 = $2 ) !x[ABC1,$0]++' File

However, I must be doing something wrong because it is not removing the duplicates. What am I doing wrong or is there a better way?

I am currently using Bourne Shell (/bin/sh)

Thank you!

Last edited by Scott; 01-11-2010 at 05:30 PM.. Reason: Removed fonts and sizes, added code tags
# 2  
Old 01-11-2010
use the curly ones {} not () :-

Code:
awk '/ABC1/{ ABC1 = $2 } !x[ABC1,$0]++'  File

Code:
o/p
ABC1 012345 header
ABC2 7890-000
ABC3 012345 Header Table
ABC4
ABC5 593.0000 587.4800
ABC5 593.5000 587.6580
ABC5 594.0000 588.0971
ABC5 594.5000 588.5361
ABC1 67890 header
ABC2 1234-0001
ABC3 67890 Header Table
ABC4
ABC5 594.5000 588.5361
ABC5 601.0000 594.1603
ABC5 601.5000 594.6121
ABC5 602.0000 595.0642
ABC1 345678 header


SmilieSmilieSmilie

Last edited by ahmad.diab; 01-11-2010 at 01:24 PM..
# 3  
Old 01-11-2010
Code:
awk '{ if ($1=="ABC1") {delete arr}
         if ( !arr[$0]++) { print $0} } ' file > newfile

# 4  
Old 01-11-2010
Thank you both!

That solved the problem and gave me a new way of removing duplicates.

Appreciate the help!
# 5  
Old 01-11-2010
If these duplicate lines are always next each other as in your sample, you can use "uniq" directly

Code:
uniq input.txt

Quote:
Originally Posted by petersf
all duplicates within that section need to be pushed into another file.
Below command will export the duplicates to another file:

Code:
uniq -d input.txt > newfile

# 6  
Old 01-18-2010
Thank You All - I got the script going!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. Shell Programming and Scripting

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 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 "the cat is fat" "I like eggs" "fish live in... (6 Replies)
Discussion started by: adrunknarwhal
6 Replies

5. Shell Programming and Scripting

Placing Duplicate Lines per section into another file

Hello, I need help in putting duplicate lines within a section into another file. Here is what I'm struggling with: Using this file “data.txt”: 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... (4 Replies)
Discussion started by: petersf
4 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