Jak odfiltrować wiersze danych wyjściowych polecenia występujące w pliku tekstowym?

15

Powiedzmy, że mamy plik tekstowy z zakazanymi liniami forbidden.txt. Jaki jest krótki sposób na odfiltrowanie wszystkich wierszy danych wyjściowych polecenia, które istnieją w pliku tekstowym?

cat input.txt | exclude-forbidden-lines forbidden.txt | sort
danijar
źródło
4
fgrep -vxf forbidden.txt input.txt | sort
Satō Katsura

Odpowiedzi:

26

Użyj w grepten sposób:

$ grep -v -x -F -f forbidden.txt input.txt

Ta długa lista opcji grepoznacza

  • -vOdwróć sens dopasowania, tzn. Poszukaj rzeczy, które nie pasują .
  • -xDopasowując wzór, wymagaj, aby wzór pasował do całej linii , tj. Nie tylko w dowolnym miejscu linii.
  • -FPodczas dopasowywania wzorca traktuj go jako stały ciąg , tzn. Nie jako wyrażenie regularne.
  • -fOdczytaj wzorce z podanego pliku ( forbidden.txt).

Następnie potokuj to sortlub cokolwiek chcesz z tym zrobić.

Kusalananda
źródło