我试图理解这个grep
命令:
#CPU physical: $(lscpu -b -p=Socket | grep -v '^#' | sort -u | wc -l)
这似乎很好理解,我唯一无法得到的是^
散列()之前的控制( #
)?
答案1
您可以将该^
字符视为“行的开头”的意思,因此^#
匹配#
在一行的开头- 换句话说,一行是注释。
通过使用-v
选项grep
,您可以选择不匹配的行。
实际上,在这种情况下,该命令会过滤掉注释。
看这里有关 Bash 中正则表达式的更多信息。
答案2
您应该尝试在不使用 grep -v 命令的情况下执行该命令并查看差异。
grep -v "^#"
- 从 lscpu 输出中删除所有注释。
反转匹配的意义,选择不匹配的行,下面有一个示例,说明如何在不过滤输出的情况下获得相同的答案:
egrep "physical id" /proc/cpuinfo|sort -u|wc -l