cat log.txt | grep '[*]'
Эта командная строка ищет в файле log.txt
строки, содержащие в себе *
.Поскольку ни одна из строк вашего ввода не имеет *
, вы ничего не получите.Обратите внимание, что [..]
в регулярном выражении называется классом символов, который соответствует любому символу внутри него.
cat log.txt | grep '\[* \]'
Эта командная строка ищет в файле строки, которые имеют ноль или более литерала [
, за которым следует пробел, за которым следует литерал ]
.Снова у вас нет таких строк.Здесь вы избежали [
и ]
.Это делает их не особенными.Таким образом, они больше не образуют класс символов, а обрабатываются буквально.
cat log.txt | grep '\[.*\]'
Этот поиск ищет строки, в которых за [
следует что-нибудь (.*
), за которым следует ]
.Поскольку у вас есть такие строки, вы получите вывод.
Наконец,
cat file | grep pattern
называется бесполезным использованием cat и может быть записано как:
grep pattern file