потребность получить номер строки искавшей строки в

find / -name "php.ini"

Я знаю, что могу найти, что вышеупомянутая команда получает точное местоположение искавшего файла. Я должен найти строку oci8 в этом файле.

так как у меня нет доступа к GUI, я не могу использовать редактора, чтобы сделать это для меня :( И потому что размер файла является относительно большим, я должен знать, какую команду делают я должен использовать для получения номера строки первого вхождения!?

2
задан 26 October 2014 в 12:47

2 ответа

Вы могли попробовать ниже find команда, какой внутренний изгиб вызывают awk.

find / -name "php.ini" -exec awk '/oci8/{print NR; exit}' {} \;

Пример:

$ cat php.ini
http://stackoverflow.com
foo oci8
oci8
$ find . -name "php.ini" -exec awk '/oci8/{print NR; exit}' {} \;
2

Объяснение:

Поиск файлов в . текущий каталог ( / корневой каталог средств) с именем php.ini. Если файл был найден с тем именем, упомянутым, тогда делают или выполняют этот awk '/oci8/{print NR; exit}' {} операция на основанных файлах.

awk '/oci8/{print NR; exit}'

Поиски строки, которая содержит строку oci8. Если это находит кого-либо, то это печатает соответствующий номер строки (print NR), и внезапно выйдите ( exit ) из поиска далее.

Через Perl

find / -name "php.ini" -exec perl -nle 'print $. and last if /oci8/;' {} \;
3
ответ дан 6 October 2019 в 22:14

Используйте grep с find:

find / -name "php.ini" -exec grep -Hnm1 'oci8' {} +

grep предназначен для поиска шаблонов в файлах. -H и -n флаги позволяют печатать имя файла и номер строки согласующих отрезков длинной линии, соответственно. -m флаг ограничивает поиск определенным числом согласующих отрезков длинной линии, в этом случае, 1.

3
ответ дан 6 October 2019 в 22:14

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

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