Comment filtrer les lignes d'une sortie de commande qui se produisent dans un fichier texte?

15

Disons que nous avons un fichier texte de lignes interdites forbidden.txt. Comment filtrer toutes les lignes d'une sortie de commande qui existent dans le fichier texte?

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

Réponses:

26

Utilisez grepcomme ceci:

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

Cette longue liste d'options grepsignifie

  • -vInversez le sens de la correspondance, c'est-à-dire recherchez des choses qui ne correspondent pas .
  • -xLorsque vous faites correspondre un motif, exigez que le motif corresponde à toute la ligne , c'est-à-dire pas n'importe où sur la ligne.
  • -FLorsque vous faites correspondre un modèle, traitez-le comme une chaîne fixe , c'est-à-dire pas comme une expression régulière.
  • -fLisez les modèles du fichier donné ( forbidden.txt).

Ensuite, dirigez-le vers sortou tout ce que vous voulez en faire.

Kusalananda
la source