Я хочу выполнить следующую задачу с помощью команды bash:
найти все файлы в /etc
, содержащие строку «10.17.1» или «130.236.189», и вывести имена файлов в другое файл.
Я пытаюсь сделать это, используя egrep
.
Вы можете использовать
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] [Тысяча сто двадцать семь]