Jak grepować z listą słów


84

Mam plik A zawierający 100 słów oddzielonych nowymi wierszami. Chciałbym przeszukać plik B, aby sprawdzić, czy występuje w nim JAKIEKOLWIEK ze słów z pliku A.

Próbowałem następujących rzeczy, ale nie działa to dla mnie:

grep -F A B

Odpowiedzi:


116

Musisz skorzystać z opcji -f:

$ grep -f A B

Ta opcja -Fwykonuje ustalone wyszukiwanie łańcuchów, gdzie tak samo jak -fokreśla plik wzorców. Możesz chcieć obu, jeśli plik zawiera tylko ustalone ciągi, a nie wyrażenia regularne.

$ grep -Ff A B

Możesz też chcieć -wdopasować tylko całe słowa:

$ grep -wFf A B

Przeczytaj man grepopis wszystkich możliwych argumentów i tego, co robią.


4
Czy -F jest tylko optymalizacją, jeśli nie chcesz używać wyrażeń regularnych?
feniks,

A co ze znalezieniem wszystkich wystąpień słów w pliku A w drzewie katalogowym B , podając tylko nazwy plików wszystkich dopasowań w B?
zealoushacker

2

Aby znaleźć bardzo długą listę słów w dużych plikach, efektywniejsze może być użycie egrep:

remove the last \n of A
$ tr '\n' '|' < A > A_regex
$ egrep -f A_regex B
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.