Есть ли какие-либо дополнительные преимущества в том, чтобы загружать файл и отправлять его в grep, кроме удобства? Удобство состоит в том, что, когда я получаю команды, подобные приведенным ниже, из моей истории, курсор находится в конце строки, поэтому легко изменить команду с другим текстом, чтобы выполнить поиск по одному и тому же файлу.
Итак, какие еще преимущества могут быть у следующего соглашения:
cat /var/tmp/trace.2043925204.xt | grep -in profile
cat /var/tmp/trace.2043925204.xt | grep -n Profile-Main
вместо того:
grep -in profile /var/tmp/trace.2043925204.xt
grep -n Profile-Main /var/tmp/trace.2043925204.xt
cat
гораздо понятнее, чем читать<
. Или, может быть, только для нас, фагов, которые думают, что Unix и bash могут многому научиться у VMS и DCL.Там нет никакого преимущества. Ваш курсор в конце также не имеет большого значения, если вы вместо этого структурируете его так:
< inputfile grep -args foo
источник
Вам просто не нужно использовать кошку в этой ситуации вообще. Это не нужно и трата времени, потому что такие инструменты, как grep, принимают имена файлов в качестве аргументов.
Обновление: Спасибо, @Andy Lester, за то, что указал, что эти тайминги не принимают во внимание кеш диска. Я узнал что-то новое! Но экономия доли секунды не имеет большого значения в любом случае. Я просто думаю, что вставка кота в grep - это не логичный способ делать вещи. Это все равно, что попросить кого-то помочь вам с проблемой, когда вы вполне способны решить ее самостоятельно.
источник
Простота редактирования - единственное реальное преимущество, и если вы делаете это в командной строке, любое дополнительное время, необходимое для запуска
cat
и выполнения конвейера, на самом деле не будет иметь значения.Однако нет причин делать это в скрипте оболочки.
источник
Там нет никакой пользы вообще. Вместо того, чтобы беспокоиться об изменении команд, научитесь лучше ориентироваться в командной строке оболочки с помощью клавиш быстрого доступа и сочетаний клавиш.
источник
Нет, и это может быть даже немного медленнее в приведенном вами примере.
pipe
Между cat и grep создается A , что не требуется при передаче имени файла непосредственно в grep. Однако я не думаю, что из-за этого вы когда-либо будете соблюдать ограничения пропускной способности.Другие преимущества ввода данных в grep включают дополнительную предварительную обработку, такую как использование утилит с более продвинутыми возможностями чтения файлов. (См
tee
,zcat
среди прочих).источник