Как отфильтровать строки вывода команды, которые появляются в текстовом файле?

15

Допустим, у нас есть текстовый файл запрещенных строк forbidden.txt. Что такое короткий способ отфильтровать все строки вывода команды, которые существуют в текстовом файле?

cat input.txt | exclude-forbidden-lines forbidden.txt | sort
Данияр
источник
4
fgrep -vxf forbidden.txt input.txt | sort
Satō Katsura

Ответы:

26

Используйте grepкак это:

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

Этот длинный список вариантов grepозначает

  • -vИнвертируйте смысл совпадения, то есть ищите вещи, которые не совпадают.
  • -xПри сопоставлении с шаблоном требуется, чтобы шаблон совпадал со всей линией , т. Е. Не только где-либо в строке.
  • -FПри сопоставлении с шаблоном рассматривайте его как фиксированную строку , т.е. не как регулярное выражение.
  • -fПрочитать шаблоны из данного файла ( forbidden.txt).

Затем передайте это sortили все, что вы хотите с ним сделать.

Кусалананда
источник