我试图了解如何在 grep 和 wc 中使用特殊字符

I'm trying to understand how to use special characters in grep and wc

你能详细解释一下这个命令发生了什么吗?

grep -nw '^root' /etc/passwd

^'有什么用?请给我示例并详细说明,因为我所听到的只是它是该行的开头。我不明白每个特殊字符的含义。

我将如何使用 wcgrep^ 找出我系统上的非根进程数 运行?

grep -nw '^root' /etc/passwd

它逐行读取 /etc/passwd 文件并过滤掉所有 ^=以 -w 开头的行=完整的单词 "root"。因此,例如行

root:x:0:0:root:/root:/bin/bash

要查看系统上的所有进程,您可以使用 ps aux。它会显示这样的行

root 22866  0.0 [...] 0:00 [kworker/1:0]

如您所见,这些行以用户名开头。如果将 ps aux 输出通过 grep 进行管道传输,则可以使用与上面相同的正则表达式来过滤掉所有 以 [=41= 开头的行].

使用-v反转模式匹配,以便grep -vw '^root'找到所有以完整单词"root"开头的行.

ps aux | grep -vw '^root' | wc -l

最后,wc -l 计算它收到的行数。所以这是 ps aux 中不以 "root".

开头的所有行数