Grep 精确匹配 Kubernetes 命名空间(非文件)
Grep exact match for Kubernetes namespace (non-files)
背景:我的 k8s 集群中有两个部署(作为示例)如下:
foo-bar
foo-bar-asd
在我的管道中,我想实现逻辑来检查是否已经部署了名为“foo-bar”的任何部署。
如何将我的命令构造为仅 fetch/output“foo-bar”,而不是“foo-bar-asd”?
我试过使用正则表达式、“^foo-bar$”等,但没有成功,通过 googling/similar Whosebug-questions 找到。
我当前的命令(获取两者):
kubectl -n my-namespace get deployments | grep foo-bar
提前感谢您的帮助!
编辑:
意识到乞丐不能选择,但是除了获取“foo-bar”之外我还需要命令不要明确提及“foo-bar-asd”。
(在放置此命令的地方构建一个管道,并且应该对不同的应用程序通用。没有完全解释,但希望有一点。)
grep
命令也可以排除某些字符串。你可以 运行 类似
kubectl -n my-namespace get deployments | grep foo-bar | grep -v foo-bar-asd
这应该会告诉你你在找什么。
由于您的搜索模式包含连字符,您不能使用“仅限整个单词”,因为连字符被视为单词分隔符,所以我的第一个答案是错误的。
你需要说你的话代表整行,你可以这样做:
grep "^foo-bar$"
^
代表“行首”。
$
代表“行尾”。
编辑:第一个答案,错误。
我的 grep
(GNU grep 3.4 ... 2019-12-29
) 版本有一个 -w
开关,我可以用它来过滤“仅整个单词”,所以在你的情况下它是:
grep -w "foo-bar"
背景:我的 k8s 集群中有两个部署(作为示例)如下:
foo-bar
foo-bar-asd
在我的管道中,我想实现逻辑来检查是否已经部署了名为“foo-bar”的任何部署。
如何将我的命令构造为仅 fetch/output“foo-bar”,而不是“foo-bar-asd”?
我试过使用正则表达式、“^foo-bar$”等,但没有成功,通过 googling/similar Whosebug-questions 找到。
我当前的命令(获取两者):
kubectl -n my-namespace get deployments | grep foo-bar
提前感谢您的帮助!
编辑: 意识到乞丐不能选择,但是除了获取“foo-bar”之外我还需要命令不要明确提及“foo-bar-asd”。 (在放置此命令的地方构建一个管道,并且应该对不同的应用程序通用。没有完全解释,但希望有一点。)
grep
命令也可以排除某些字符串。你可以 运行 类似
kubectl -n my-namespace get deployments | grep foo-bar | grep -v foo-bar-asd
这应该会告诉你你在找什么。
由于您的搜索模式包含连字符,您不能使用“仅限整个单词”,因为连字符被视为单词分隔符,所以我的第一个答案是错误的。
你需要说你的话代表整行,你可以这样做:
grep "^foo-bar$"
^
代表“行首”。
$
代表“行尾”。
编辑:第一个答案,错误。
我的 grep
(GNU grep 3.4 ... 2019-12-29
) 版本有一个 -w
开关,我可以用它来过滤“仅整个单词”,所以在你的情况下它是:
grep -w "foo-bar"