grep -v * string * и grep -v string создают совершенно разные результаты - PullRequest
0 голосов
/ 26 февраля 2020
grep -v mystring myfile.txt

возвращает ~ 300KB

grep -v *mystring* myfile.txt

возвращает ~ 7GB

.... что я здесь не так делаю?

1 Ответ

1 голос
/ 26 февраля 2020

Ваше регулярное выражение неверно. По умолчанию grep принимает регулярные выражения в качестве аргумента вместе с флагами командной строки. То, что вы попытались *mystring*, является выражением глобуса оболочки, которое расширяется до возможного набора имен файлов, содержащих строку mystring. Таким образом, ваши grep команды становятся следующими; при условии, что у вас есть имена файлов, содержащие mystring

grep -v mystring1 foomystring2 foomystring3 myfile.txt

, которые могут привести к неожиданным результатам в зависимости от содержимого этих файлов. Правильный способ будет использовать квантификатор жадных совпадений .*

grep -v '.*mystring1.*' myfile.txt
...