需要获取搜索字符串的行号

需要获取搜索字符串的行号
find / -name "php.ini"

我知道我可以找到上述命令来获取搜索文件的确切位置。我需要找到字符串oci8在此文件中。

由于我无法访问 GUI,所以我无法使用编辑器来为我执行此操作 :( 并且由于文件大小相对较大,我需要知道必须使用什么命令才能获取第一次出现的行号!?

答案1

您可以尝试以下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/;' {} \;

答案2

使用:grepfind

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

grep用于在文件中搜索模式。-H-n标志分别允许打印文件名和匹配行的行号。-m标志将搜索限制为一定数量的匹配行,在本例中为 1。

相关内容