Grep

從格式化為帶空格的表格的字元串中,如何 grep 所有列的所有值都相等?

  • September 25, 2019

問題來自問題: https ://github.com/kubernetes/kubectl/issues/717

Kubectl 在如下表中返回資訊:

$ kubectl get replicasets -n kube-system

NAMESPACE     NAME                       DESIRED   CURRENT   READY   AGE
kube-system   datadog-657c65b75c         2         2         2       11d
kube-system   kube-ops-view-5d8df57fc    1         1         0       33d

要在不使用 json 格式化程序的情況下查找輸出中的所有偏差,我可以執行以下命令:

grep -v '0         0         0\|1         1         1\|2         2         2\|3         3         3\|4         4         4\|5         5         5'

什麼 grep 命令可以涵蓋所有可能的情況?目標是找到 DESIRED != CURRENT、CURRENT != READY 或 DESIRED != READY 的任何 ReplicaSet。

grep當您的模式既不是固定字元串也不是正則表達式時,它不是很好。

當您想要所有“desired”、“current”和“ready”的數字不相同的副本集時,請使用更好的模式匹配語言,例如awk

  kubectl get replicasets -n kube-system | awk '$3!=$4 || $4!=$5 {print $0}'

它應該返回標頭和任何不一致的副本集。

您可以使用以下方法省略標題:

   awk 'NR!=1 && ($3!=$4 || $4!=$5)  {print $0 }'       

一致的副本集將列出:

  awk '$3==$4 && $4==$5 {print $0}'  

引用自:https://serverfault.com/questions/985559