Compare 2 Lists

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.
stakorAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
ozoConnect With a Mentor Commented:
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
 
stakorAuthor Commented:
Sorry, 2.txt should read:

testtest gibberish gibberish
DDBlahblah gibberish gibberish gibberish
0
 
ozoCommented:
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
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
stakorAuthor Commented:
Sorry for the mistake. The first word is what I was trying to say.
0
 
stakorAuthor Commented:
And case should be ignored as well.
0
 
stakorAuthor Commented:
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
 
stakorAuthor Commented:
The reason I ask, is that when I ran it, I was in an interactive mode of some variety.
0
 
ozoCommented:
What is a database mode?
0
 
stakorAuthor Commented:
When I ran the script, I was sitting at a command prompt that read something like DB1 ? I did not write it down.
0
 
stakorAuthor Commented:
I think I figured it out.
0
All Courses

From novice to tech pro — start learning today.