print a line when NOT in a file

I have a list of words, one word per line, LIST1.TXT that I want to check for in another file, PARAGRAPHS.TXT. If the line from LIST1.TXT is NOT in PARAGRAPHS.TXT I want to print it to screen. The keyword here is NOT. If the word from LIST1.TXT is NOT in the file PARAGRAPHS.TXT, then I want to know about it. Print it to screen. Write it to file. No matter.

How about (case sensitive):

join -v 1 <(sort -u<list1.txt) <(grep -o '\b[^[:space:]]*\b' paragraphs.txt |sort -u)

case insensitive:

join -v 1 <(sort -u<list1.txt|tr 'A-Z' 'a-z') <(grep -o '\b[^[:space:]]*\b' paragraphs.txt |sort -u|tr 'A-Z' 'a-z')

(I chose this because of speed. It should be proportional to (3-5)n (n=size of biggest file) instead of mn for a loop. )

grep -vf PARAGRAPHS.TXT LIST1.TXT

And yet another way which, depending upon what you are doing next, may or may not be more convenient:

for i in `cat list1.txt`; do grep -q $i paragraph.txt || echo $i; done

or

for i in `cat list1.txt`; do grep -iq $i paragraphs.txt || echo $i; done

Hi CFA, this does not seem to work right?

What does "does not seem to work right" mean? What does happen that shouldn't? What doesn't happen that should?

Perhaps I got the filenames backwards (the OP was a little unclear).

grep -vf LIST1.TXT PARAGRAPHS.TXT 

With list1.txt as the first parameter I get its content as output. The other way around I get no output. As I understands it the OP is looking for those words that are in list1.txt (one word per line) and that are missing from the paragraphs in paragraphs.txt.

that's expensive operation, calling grep for each line in list1.txt. use grep's -f option when possible