显示包含单词的所有文件的匹配计数

3 linux grep command-line

用于仅识别/etc包含单词“HOST”的目录下文件中所有行的匹配计数的单个命令是什么?

我应该只列出匹配的文件并禁止任何错误消息。

Den*_*son 9

要计算匹配项,只列出文件名和计数:

grep -src HOST /etc/*
Run Code Online (Sandbox Code Playgroud)

示例输出:

/etc/postfix/postfix-files:1
/etc/security/pam_env.conf:6
/etc/X11/app-defaults/Ddd.3.3.11:1
/etc/X11/app-defaults/Ddd:1
/etc/zsh/zshrc:0
/etc/zsh/zshenv:0
Run Code Online (Sandbox Code Playgroud)

-c选项禁止正常输出并打印每个文件的匹配计数。

如果您想抑制零计数的文件:

grep -src HOST /etc/* | grep -v ':0$'
Run Code Online (Sandbox Code Playgroud)

要为任意数量的输入文件的每个匹配行打印行号 ( -n) 和文件名 ( -H):

grep -srnH HOST /etc/*
Run Code Online (Sandbox Code Playgroud)

示例输出:

/etc/lynx-cur/lynx.cfg:254:.h2 LYNX_HOST_NAME
/etc/lynx-cur/lynx.cfg:255:# If LYNX_HOST_NAME is defined here or in userdefs.h, it will be
/etc/X11/app-defaults/Ddd.3.3.11:8005:    DDD 3.3.11 (@THEHOST@) gets @CAUSE@\n\
/etc/X11/app-defaults/Ddd:8010:    DDD 3.3.12 (@THEHOST@) gets @CAUSE@\n\
Run Code Online (Sandbox Code Playgroud)

该选项-r导致grep递归搜索指定目录下所有级别的每个子目录中的文件。该-s选项抑制错误消息。

要抑制二进制文件的匹配,请使用该-I选项。

有关man grep更多信息,请参阅。


hvg*_*des 1

它不是一个命令,而是一行

就像是

 grep -r ',,HOST' . | wc -l
Run Code Online (Sandbox Code Playgroud)