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

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ć.

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.