Solved

Compare 2 Lists

Posted on 2013-11-14
10
174 Views
Last Modified: 2013-11-14
I need to take two text files. One has one column of data, one word per line. The second one has a number of words per line, but the first line (separated by white space) is the only thing I am interested in removing any lines that do not have "DD" in the word. I would like to print a list of any words that appear in 1.txt that do not appear in 2.txt. They might be in any order, and might appear any number of times. Is there an easy way of doing this?

Examples:

1.txt:
test
DDblah
DDblahBlah

2.txt:
testtest
DDBlahblah

Result:
DDblah

Since the only work that has DD in it, that appears in 1.txt that does not appear in 2.txt is DDblah, only DDlah would be printed.
0
Comment
Question by:stakor
  • 7
  • 3
10 Comments
 

Author Comment

by:stakor
ID: 39650033
Sorry, 2.txt should read:

testtest gibberish gibberish
DDBlahblah gibberish gibberish gibberish
0
 
LVL 84

Expert Comment

by:ozo
ID: 39650058
I'm confused.
first line (separated by white space)
Do you mean the first word  (separated by white space)?
but the first line (separated by white space) is the only thing I am interested in removing any lines that do not have "DD" in the word.
Does the I am interested in go with is the only thing am interested in or does it go with I am interested in removing any lines?

is
DDblahBlah
the same as
DDBlahblah
?
Do you want to ignore case?


Do you mean you want to do something like:
perl -d -alne '$x{lc $1}|=$#ARGV if /^(DD\S*)/;END{$x{$_}==0 and print for keys %x}' 1.txt 2.txt
0
 

Author Comment

by:stakor
ID: 39650062
Sorry for the mistake. The first word is what I was trying to say.
0
Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

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

 

Author Comment

by:stakor
ID: 39650064
And case should be ignored as well.
0
 

Author Comment

by:stakor
ID: 39650072
Is there a way to run this without invoking a database mode? I know that would probably the most efficient, but this will likely only be a list of like 50 - 100 items.
0
 

Author Comment

by:stakor
ID: 39650073
The reason I ask, is that when I ran it, I was in an interactive mode of some variety.
0
 
LVL 84

Expert Comment

by:ozo
ID: 39650091
What is a database mode?
0
 
LVL 84

Accepted Solution

by:
ozo earned 500 total points
ID: 39650095
Oops, forgot to turn off debugging when I cut and pasted.
The command should have been.

perl -alne '$x{lc $1}|=$#ARGV if /^(DD\S*)/;END{$x{$_}==0 and print for keys %x}' 1.txt 2.txt
0
 

Author Comment

by:stakor
ID: 39650099
When I ran the script, I was sitting at a command prompt that read something like DB1 ? I did not write it down.
0
 

Author Comment

by:stakor
ID: 39650135
I think I figured it out.
0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

A year or so back I was asked to have a play with MongoDB; within half an hour I had downloaded (http://www.mongodb.org/downloads),  installed and started the daemon, and had a console window open. After an hour or two of playing at the command …
In the distant past (last year) I hacked together a little toy that would allow a couple of Manager types to query, preview, and extract data from a number of MongoDB instances, to their tool of choice: Excel (http://dilbert.com/strips/comic/2007-08…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…

839 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question