我有一個如下命令
kubectl get pods |
grep -v 1/1 |
grep -v 2/2 |
awk '{print $1:$2:$3}' |
awk 'BEGIN{ print "<style>table,th,td {border:1px solid black;}
示例輸出kubectl:
NAMESPACE NAME READY STATUS RESTARTS
ABC ABC-jkij 1/1 RUNNING 897
BAC BAC-jkij 2/2 RUNNING 897
HJI HJI-jkij 2/2 RUNNING 897
kubectl get pods | grep -v 1/1 | grep -v 2/2 | awk '{print $1:$2:$3}'
上面的命令只會產生如下所示的標題-v:
NAMESPACE NAME READY STATUS RESTARTS
所以在 Awk 中我們沒有記錄變數的權利,我想在 Awk 塊中放置一個條件,它應該只在有任何 0/1 或 0/2 pod 結果時列印,而不僅僅是標題。
所以總結一下
NAMESPACE NAME READY STATUS RESTARTS
--> awk 不應該列印任何東西
NAMESPACE NAME READY STATUS RESTARTS
ABC ABC-jkij 0/1 RUNNING 897
ABC ABC-jkij 0/2 RUNNING 897
awk 應該只在上述情況下列印。
NAME NAMESPACE STATUS如果沒有 0/1 0/2 等狀態的 pod,上面的命令將給出類似輸出的標題。現在我想包含一個if條件,說if (NR >1 )只有它應該列印,否則它不應該列印任何東西,即標題。如果我嘗試放入 if (NR>1)begin 塊,它仍在列印標題。
uj5u.com熱心網友回復:
您通常應該避免將 Awk 匯入 Awk;它是一種腳本語言,因此您可以根據需要放置任意數量的陳述句。
kubectl get pods |
awk 'NR>1 && !/1\/1|2\/2/ { a[1]=$1; a[2]=$2; a[3]=$3;
if (!headers) print "<style>table,th,td {border:1px solid black;}</style><table>"
headers=1
print "<tr>"
for (i=1; i<=3; i) printf "<td>%s</td>\n", a[i]
print "</tr>"
}
END { if (headers) print "</table>" }'
我不得不猜測一下您的預期輸出是什么,但如果出現故障,我希望很容易看出要修復什么。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/425660.html
下一篇:一個個殺死子行程
