Используйте grep, чтобы удалить все вхождения двух значений из списка - PullRequest
0 голосов
/ 06 октября 2018

У меня есть список в файле, содержащий числа в диапазоне от 1 до 66000. Я хотел бы выполнить grep всех чисел и исключить числа 80 и 443. В качестве примера 1080 в порядке, как 4431.

Ответы [ 3 ]

0 голосов
/ 06 октября 2018

Чтобы добавить к ответу Джозефа, egrep устарел в пользу grep, поэтому ответ лучше выразить в виде:

grep -Ev '^(80|443)$' yourfile

Редактировать: если в каждой строке есть другая информациянапример, "80" или blah 80 blah, и вы также хотите исключить эти строки, вместо слов ^ и $

grep -Ev '\b80\b|\b443\b' yourfile
можно использовать границы слов (\b)
0 голосов
/ 06 октября 2018

Попробуйте это:

grep -Pv '(^|[^0-9])(80|443)($|[^0-9])' file

При этом будут напечатаны все строки, не содержащие 80 и 443, в окружении нечисловых символов или начала / конца строки.

$ cat file
port 332
port 4443
port 80
port 8080
port 443
332 port
4443 port
80  port
8080 port
443 port
$ grep -Pv '(^|[^0-9])(80|443)($|[^0-9])' file
port 332
port 4443
port 8080
332 port
4443 port
8080 port
0 голосов
/ 06 октября 2018

Это будет делать:

egrep -v '^(80|443)$' yourfile

Это печатает все строки в файле, которые не состоят из 80 или 443.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...