Ответ 1
Да, я мог бы.
Команда egrep
является ярлыком для двоичного файла grep
, но с одним исключением, когда grep
вызывается как egrep
, двоичный файл grep
активирует свою внутреннюю логику, так как он будет называться grep -E
.
Какую разницу вы спросите.. и разница в том, что параметр -E
позволяет использовать расширенные шаблоны регулярных выражений, это позволит вам использовать такие метасимволы, как +
, ?
или |
( труба). Они не являются ординальными символами, как мы использовали в словах или именах файлов, но управляем командами для самого бинарного grep
. Таким образом, |
означает логическое ИЛИ.
Так, например, вы хотите перечислить файлы в каталоге и увидеть только те, которые содержат расширения "mp4" или "avi". С помощью egrep
вы выполните:
ls | egrep "mp4|avi"
В этом примере |
действует как команда OR, он будет захватывать вывод из ls
всех имен, содержащих строки "mp4" или "avi". Если вы запустите его с помощью простой команды grep
, вы ничего не получите, потому что grep
не знает такой команды, как |
, и она будет искать целую текстовую строку "mp4 | avi" (с символом трубы). Например. если у вас есть файл |MPG|cool-guy.q2.stats
в вашем каталоге, вы получите его с обычным поиском grep
с помощью труб.
Сооо, поэтому вам нужно избежать |
в вашей команде egrep
для достижения того же эффекта, что и в grep
. Escaping отключит специальное значение команды |
для двоичного файла grep
.