Como filtrar linhas de uma saída de comando que ocorrem em um arquivo de texto?

15

Digamos que temos um arquivo de texto de linhas proibidas forbidden.txt. Qual é uma maneira curta de filtrar todas as linhas de uma saída de comando que existem no arquivo de texto?

cat input.txt | exclude-forbidden-lines forbidden.txt | sort
danijar
fonte
4
fgrep -vxf forbidden.txt input.txt | sort
Satō Katsura

Respostas:

26

Use grepassim:

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

Essa longa lista de opções para grepmeios

  • -vInverta o sentido da partida, ou seja, procure por coisas que não correspondem.
  • -xAo combinar um padrão, exija que o padrão corresponda à linha inteira , ou seja, não apenas em qualquer lugar da linha.
  • -F Ao combinar um padrão, trate-o como um sequência fixa , ou seja, não como uma expressão regular.
  • -f Leia padrões do arquivo fornecido (forbidden.txt ).

Em seguida, canalize isso para o sortque você quiser fazer com ele.

Kusalananda
fonte