How to find words from one file in another file?

后端 未结 2 1948
予麋鹿
予麋鹿 2020-12-11 17:02

In one text file, I have 150 words. I have another text file, which has about 100,000 lines.

How can I check for each of the words belonging to the first file wh

相关标签:
2条回答
  • 2020-12-11 17:08

    You can use grep -f:

    grep -Ff "first-file" "second-file"
    

    OR else to match full words:

    grep -w -Ff "first-file" "second-file"
    

    UPDATE: As per the comments:

    awk 'FNR==NR{a[$1]; next} ($1 in a){delete a[$1]; print $1}' file1 file2
    
    0 讨论(0)
  • 2020-12-11 17:30

    Use grep like this:

    grep -f firstfile secondfile
    

    SECOND OPTION

    Thank you to Ed Morton for pointing out that the words in the file "reserved" are treated as patterns. If that is an issue - it may or may not be - the OP can maybe use something like this which doesn't use patterns:

    File "reserved"

    cat
    dog
    fox
    

    and file "text"

    The cat jumped over the lazy
    fox but didn't land on the
    moon at all.
    However it did land on the dog!!!
    

    Awk script is like this:

    awk 'BEGIN{i=0}FNR==NR{res[i++]=$1;next}{for(j=0;j<i;j++)if(index($0,res[j]))print $0}' reserved text
    

    with output:

    The cat jumped over the lazy
    fox but didn't land on the
    However it did land on the dog!!!
    

    THIRD OPTION

    Alternatively, it can be done quite simply, but more slowly in bash:

    while read r; do grep $r secondfile; done < firstfile 
    
    0 讨论(0)
提交回复
热议问题