Visit Our UNIX and Linux User Community


Help with showing the difference in two lines of input


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with showing the difference in two lines of input
# 8  
Old 02-14-2008
Supposing one line per file:
Code:
awk '
NR==FNR{sub(/\n/,"");a1[$0]=$0;next}
{sub(/\n/,"");a2[$0]=$0;if ( ! ( $0 in a1 ) ){print "In file 2 but not in 1:"$0}}
END {for ( i in a1 ) 
    if  ( ! ( i in a2 ) ) {print "In file 1 but not in 2:"i}
}' RS=' '  f1 f2

# 9  
Old 02-14-2008
In Python try this:

Code:
from sets import Set
a = Set([1,2,3,4,5,6,80,90])
b = Set([1,2,3,4,5,80,90])
for i, v in enumerate(a^b):
	print v

>>> 6
# 10  
Old 02-14-2008
Quote:
Originally Posted by Kweekwom
Thanks again for your help drl, but I apparently don't have the wdiff command available to me. Any other ideas? Thanks!
You may not have wdiff, but you still have diff, yes? "man diff" should give you any information you'll need.

bakunin
# 11  
Old 02-14-2008
Quote:
Originally Posted by Klashxx
Supposing one line per file:
Code:
awk '
NR==FNR{sub(/\n/,"");a1[$0]=$0;next}
{sub(/\n/,"");a2[$0]=$0;if ( ! ( $0 in a1 ) ){print "In file 2 but not in 1:"$0}}
END {for ( i in a1 ) 
    if  ( ! ( i in a2 ) ) {print "In file 1 but not in 2:"i}
}' RS=' '  f1 f2

Thanks for looking into it Klashxx,

When I try your suggestion, and say I input these numbers:

255 256 280 290

I get this error:

awk: cmd. line:6: fatal: cannot open file `255' for reading (No such file or directory)

It always says it can't open the first number. I'm not good with awk, do you see where the problem is?

Thanks,

Kweekwom
# 12  
Old 02-14-2008
Quote:
Originally Posted by Kweekwom
Thanks for looking into it Klashxx,

When I try your suggestion, and say I input these numbers:

255 256 280 290

I get this error:

awk: cmd. line:6: fatal: cannot open file `255' for reading (No such file or directory)

It always says it can't open the first number. I'm not good with awk, do you see where the problem is?

Thanks,

Kweekwom
Hi , u need to put the input lines in files, for ex:

Code:
$ cat file1
255 256 280 290 15
$ cat file2
255 256 280 290 4 5

And then:
Code:
$ awk '
NR==FNR{sub(/\n/,"");a1[$0]=$0;next}
{sub(/\n/,"");a2[$0]=$0;if ( ! ( $0 in a1 ) ){print "In line 2 but not in 1:"$0}}
END {for ( i in a1 ) 
    if  ( ! ( i in a2 ) ) {print "In line 1 but not in 2:"i}
}' RS=' '  file1 file2
In line 2 but not in 1:4
In line 2 but not in 1:5
In line 1 but not in 2:15

Regards

Last edited by Klashxx; 02-14-2008 at 07:40 PM..
# 13  
Old 02-14-2008
Quote:
Originally Posted by Klashxx
Hi , u need to put the input lines in files, for ex:

Code:
$ cat file1
255 256 280 290 15
$ cat file2
255 256 280 290 4 5

And then:
Code:
$ awk '
NR==FNR{sub(/\n/,"");a1[$0]=$0;next}
{sub(/\n/,"");a2[$0]=$0;if ( ! ( $0 in a1 ) ){print "In line 2 but not in 1:"$0}}
END {for ( i in a1 ) 
    if  ( ! ( i in a2 ) ) {print "In line 1 but not in 2:"i}
}' RS=' '  file1 file2
In line 2 but not in 1:4
In line 2 but not in 1:5
In line 1 but not in 2:15

Regards
Thanks! It seems to be working fine.

Previous Thread | Next Thread
Test Your Knowledge in Computers #722
Difficulty: Medium
Konrad Zuse built the first digital freely programmable computer, the Z1.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Calculate time difference between two lines

i grepped the time stamp in a file as given below now i need to calculate time difference file data: 18:29:10 22:15:50 (5 Replies)
Discussion started by: vivekn
5 Replies

2. Shell Programming and Scripting

Removing multiple lines from input file, if multiple lines match a pattern.

GM, I have an issue at work, which requires a simple solution. But, after multiple attempts, I have not been able to hit on the code needed. I am assuming that sed, awk or even perl could do what I need. I have an application that adds extra blank page feeds, for multiple reports, when... (7 Replies)
Discussion started by: jxfish2
7 Replies

3. Shell Programming and Scripting

What is difference between this two lines in script?

Hi Guys, What is difference between this two lines in script logger -p daemon.info -t postback Starting /opt/local/bin/backup-report and /opt/local/bin/backup-report is the backu script running twice here? Thanks, (2 Replies)
Discussion started by: manalisharmabe
2 Replies

4. Shell Programming and Scripting

Perl : code on ping showing difference result

Hi all, I am using the below code to ping a code and print whehter the connection is successful or not. use Net::Ping; $p = Net::Ping->new(); my $host = "x.x.x.x"; # print "$host is alive.\n" if $p->ping($host); if ($p->ping($host,3)) { print... (0 Replies)
Discussion started by: scriptscript
0 Replies

5. Shell Programming and Scripting

Help with script or command to differentiate difference between two input file?

I got two file write now. Input file 1: >data_1 DSFDFDSGFDSGSGEGTRTRERPOYIORPGKKGDSPKFSDKFPSDKFSPFS >data_34 WEEREREWREWOIQOPIEPDSKLFNDSFNSKNCASKJHDAFHAOUDFEOWWIOUFEWIUEWIRUEWIRUEWIORUEWOREWR >data_21 ASDASDQWEQWRQERFWPOTGIUWEIPOFIOFDSNFKSJDNFSKDHFKDSJHFKDSJHF >data_4... (14 Replies)
Discussion started by: perl_beginner
14 Replies

6. Shell Programming and Scripting

Showing the first 4 lines of a file?

Is there a way to show the first 4 lines of a file without using head -4? In sed would it be sed '1,4d' ? What if I just wanted to display the 2nd line ONLY? How could this be done with AWK?...correctly with SED? (6 Replies)
Discussion started by: puttster
6 Replies

7. Shell Programming and Scripting

difference between 1 st fields from consicutive lines

13608:End of Tests. 13811:End of Tests. 14014:End of Tests. 14217:End of Tests. 14420:End of Tests. 14623:End of Tests. 14826:End of Tests. 15029:End of Tests. 15232:End of Tests. 15435:End of Tests. 15638:End of Tests. i have file like above. i want difference betwwn first field of... (2 Replies)
Discussion started by: pankajd
2 Replies

8. UNIX for Dummies Questions & Answers

awk help in calulating difference for last two lines

Hi all, I have a requirement for a script to find out the increase in memory. We have a log native_stderr.log where this will log. bash-2.05$ tail -40 native_stderr.log | grep ': freed' <GC(4140): freed 168190456 bytes, 66% free (180990488/271776256), in 253 ms> <GC(4141): freed... (4 Replies)
Discussion started by: senthilkumar_ak
4 Replies

9. UNIX for Dummies Questions & Answers

counting lines and showing the output

First time poster - I have a huge file and i want to sort and compress it to something more readable Ex: FUTNCA01-SL1 DMT8a4 5 3 FUTNCA01-SL1 DMT8a4 5 9 FUTNCA01-SL1 DMT8a4 5 21 FUTNCA01-SL1 DMT8a4 5 22 FUTNCA01-SL1 DMT8a4 5 23 FUTNCA01-SL1 DMT8a4 5 24 FUTNCA01-SL1 DMT8a4 6 2... (13 Replies)
Discussion started by: jjoves
13 Replies

10. UNIX for Dummies Questions & Answers

word count showing wrong number of lines

Hi , I am using SUN OS Version 5.6. I have a file that contains records of length 270. when I do 'set nu' in vi editor, I get the count as 86. whereas when I do "wc -l" on the command prompt, it shows the count as only 85. this is very strange. why would the 'wc' show 1 record less. The job... (3 Replies)
Discussion started by: tselvanin
3 Replies

Featured Tech Videos