我有下一個回傳以下輸出的命令
kubectl get pods
輸出:
NAME READY STATUS RESTARTS AGE
svc-admin-async-6d4cd4989f-8lzcq 1/1 Running 0 4d7h
svc-admin-c795b488d-kpcsn 1/1 Running 0 3d2h
svc-admin-c795b488d-m9mjg 1/1 Running 0 7d6h
svc-bpm-inbox-77fffc4d89-cx7g7 1/1 Running 0 7d6h
svc-bpm-tasks-654695689d-spvt7 1/1 Running 0 3d17h
svc-bpm-tasks-654695689d-wrclq 1/1 Running 0 3d17h
svc-claim-78b7d8db99-9m6zs 1/1 Running 0 120m
svc-claim-78b7d8db99-qvq9m 1/1 Running 0 120m
我只需要列出以給定引數開頭的 pod。例如,如果引數是 svc-bpm-tasks,則只應顯示:
svc-bpm-tasks-654695689d-spvt7
svc-bpm-tasks-654695689d-wrclq
我有以下腳本,但我不知道如何過濾:
set param_to_filter=%~1
FOR /F "skip=1" %%I in ('kubectl get pods') DO (
:: if %%I starts_with param_to_filter
echo %%I
)
謝謝你的幫助
uj5u.com熱心網友回復:
FOR /F %%I in ('kubectl get pods^|findstr /i /b /L /C:"%~1"') DO (
應該做你想做的。
插入符號轉義管道,告訴cmd管道是要執行的命令的一部分。
findstr查找以 string/b開頭的任何字串%~1,這是批處理的第一個引數。
skip不再需要,因為標題行不會以任何目標字串開頭。
是可選的/i,使匹配不區分大小寫。
!不要在(帶括號的行序列)中使用::注釋,因為它實際上是一個損壞的標簽,這會使. 在代碼塊中使用。code blockcmdrem
已修改 - 由于任何字串都可用于%1,因此用于/L指定L迭代比較以覆寫默認值/r(正則運算式匹配)
/c:"string"匹配還補償了字串中出現空格的可能性%~1。如果出現空格%~1(通過提供帶引號的引數"one two"),那么沒有/c:,findstr將搜索oneOR two。有了/c:,搜索就是一二Space。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/497704.html
