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

7

Digamos que temos um arquivo de texto de linhas proibidas forbidden.txt . O que é um modo curto de filtrar todas as linhas de uma saída de comando que existe no arquivo de texto?

cat input.txt | exclude-forbidden-lines forbidden.txt | sort
    
por danijar 31.07.2016 / 20:30

1 resposta

17

Use grep da seguinte forma:

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

Essa longa lista de opções para grep significa

  • -v Inverte o sentido da correspondência, ou seja, procure as coisas não correspondentes.
  • -x Ao corresponder a um padrão, exige que o padrão corresponda a a linha inteira , ou seja, não apenas em qualquer lugar na linha.
  • -F Ao corresponder a um padrão, trate-o como uma sequência fixa , isto é, não como uma expressão regular.
  • -f Ler padrões do arquivo fornecido ( forbidden.txt ).

Em seguida, canalize isso para sort ou o que você quiser fazer com ele.

    
por 31.07.2016 / 20:36