Grep
從格式化為帶空格的表格的字元串中,如何 grep 所有列的所有值都相等?
問題來自問題: 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}'