如果你想使用 grep
查找包含 “Cached:” 的行而不匹配到 “SwapCached:“,可以使用一个简单的正则表达式来确保只匹配前者。以下是几种不同的方法:
使用 grep -E
(扩展正则表达式)
你可以利用 grep
的扩展正则表达式选项 -E
结合负向前瞻 (negative lookahead) 来实现:
grep -E 'Cached:(?!.*SwapCached)' /proc/meminfo
不过,请注意,某些版本的 grep
可能不支持负向前瞻。
使用 grep
和 grep -v
另一种方法是先找到所有以 “Cached:” 开头的行,然后通过管道排除掉包含 “SwapCached” 的行:
grep '^Cached:' /proc/meminfo | grep -v 'SwapCached'
这种方法更为常见且兼容性好。
使用 awk
如果你愿意使用其他工具,可以用 awk
来完成这个任务,这样能更清晰地控制逻辑:
awk '/^Cached:/ && !/SwapCached/' /proc/meminfo
这里的条件确保只输出以 “Cached:” 开头且不包含 “SwapCached” 的行。
总结
这三种方法都能达到你的目的,具体选择哪一种取决于你的习惯和环境中可用的工具。一般来说,第一种与第三种相对灵活,而第二种则简洁且易于理解。
内容由零声教学AI助手提供,问题来源于学员提问