grep, как подавить дисплей неподобранного файла?

Обучение использовать Ctrl-R и Ctrl-S позволяет легко искать команды, которые Вы ищете в истории, и Вы уже нашли, что переменная среды HISTCONTROL проигнорировала дубликаты и изменила сайт файла истории удара.

Я обычно делаю многих Ctrl-R, сопровождаемый Ctrl-E и изменяющий некоторые параметры, если я пропустил найденную команду путем удара Ctrl-R слишком много раз, Ctrl-S к спасению.

10
06.12.2012, 15:55
5 ответов

Это - поведение, показанное grep -c.

Вероятно, у Вас есть файл, имя которого запускается с - и содержит a c символ и Вы используете GNU grep, не устанавливая POSIXLY_CORRECT переменная среды.

Использование:

grep -- delete *

или лучше:

grep delete ./*

-- отмечает конец опций так, чтобы то имя файла не рассматривали как опцию (с POSIX grep, это не было бы начиная с неопции delete аргумент отметил бы конец опций), но он не решит проблему названного файла -. grep delete ./* более устойчиво, но имеет недостаток вывода дополнительного ./ для соответствия файлам (хотя это можно считать премией, так как это помогает определить имена файлов, которые содержат символы новой строки).

9
27.01.2020, 19:59

Используя grep -l Вы только получите файлы, которые содержат по крайней мере одно соответствие.

Вам нужна информация о сколько соответствий, там находятся в файле вообще? Поскольку Вы могли пропустить использование -c который используется для подсчета количества соответствий в файле.

править: И как колдун сказал использование -I подавить соответствия в двоичных файлах могло также быть хорошей идеей.

9
27.01.2020, 19:59

Добавить

| grep -v ':0$'

Не очень изящный, но я думаю, сделает задание.

Добавление -l к Вашей команде даст, Вы только соответствуете, но она также подавит количество печати соответствий для каждого файла.

11
27.01.2020, 19:59
  • 1
    -l обработанный. обходное решение также хорошо. Спасибо –  mtk 22.11.2012, 13:47
  • 2
    grep строка должно быть grep -v ':0$' таким образом, только те, которые в конце строки, подобраны (однако, grep -l подход намного лучше, пока Вам не нужны количества строки) –  mreithub 22.11.2012, 14:17

Как найти ненулевые значения:

grep -rIcH 'string'. | grep -v ':0$'

  • -rРекурсивные подкаталоги.
  • -IИгнорировать бинарные файлы(спасибо @tongpu , чернокнижник).
  • -cПоказать количество совпадений. Раздражает, включает в себя 0 -файлов count.
  • -HПоказать имя файла, даже если это только один файл.
  • 'string'здесь идет ваша строка.
  • .Начать с текущего каталога.
  • | -v ':0$'Удалить 0 -файлов count.(спасибо @LaurentiuRoescu)

(Я понимаю, что OP был непреднамеренно -c подсчетом, но google (grep nonzero count )попадает сюда.)

1
27.01.2020, 19:59

Подобно ответу Лаурентиу, вы также можете использовать листинг -lв качестве входных файлов для grep:
grep -r "pattern" -c $(grep -rl "pattern")
Это позволяет сохранить окраску grep, но делает то же самое в фоновом режиме

0
27.01.2020, 19:59

Теги

Похожие вопросы