Как найти содержимое файла в каталоге по определенному шаблону, а затем вернуть (перенаправить) имя файла в другой файл?

Я хочу выполнить следующую задачу с помощью команды bash:

найти все файлы в /etc, содержащие строку «10.17.1» или «130.236.189», и вывести имена файлов в другое файл.

Я пытаюсь сделать это, используя egrep.

5
задан 15 April 2017 в 18:57

1 ответ

Вы можете использовать

sudo egrep -rl '(10\.17\.1|130\.236\.189)' /etc > newfile

Заметки

  • Вам нужно sudo, чтобы увидеть здесь некоторые файлы.
  • -l печатать только имена файлов, а не совпадающие строки
  • -r рекурсивный поиск. Удалите, если вы хотите проверять файлы только на верхнем уровне
  • \., соответствуют литералу .; без экранирования . соответствует любому символу.
  • a|b соответствуют a или b. Скобки в этом примере лишние, потому что в регулярном выражении больше ничего нет. 'foo|bar' соответствует foo или bar так же, как и '(foo|bar)'. Но я включил их, потому что считаю, что это хорошая практика: круглые скобки определяют область начала / остановки чередования, например, 'foo bar|baz' соответствует foo bar или baz, тогда как 'foo (bar|baz)' соответствует foo bar или foo baz. [ 1125] [Тысяча сто двадцать семь]
0
ответ дан 15 April 2017 в 18:57

Другие вопросы по тегам:

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