问题:我想列出所有与表达式"test-"匹配的pod,我的表达式对这些pod运行良好,然后如果行中存在该表达式,我只想打印$1和$2。我怎么能?我想用一个AWK做这件事,不要再管了。
kubectl get pods --all-namespaces --field-selector=spec.nodeName=node1,status.phase!=Succeeded --no-headers | awk '$1 ~ /maglev-/'
输出
test-78ac951e-89a6-4199-87a4-db8a1b8b054f export-4cb52be4-8a90-400-ilxr4b-avexport-xavierisp-sjc4--b76888-b3f 1/1 Running 0 20h
test-78ac951e-89a6-4199-87a4-db8a1b8b054f export-9b55f0d5-071d-431-1d2ux0-avexport-xavierisp-sjc4--a4dd85-102 1/1 Running 0 17h
dtlu @ dtlu16 ~
└─ $ ▶ kubectl get pods --all-namespaces --field-selector=spec.nodeName=node1,status.phase!=Succeeded --no-headers | awk '$1 ~ /test-/' '{print $1,$2}'
实际输出:
awk: cannot open {print $1,$2} (No such file or directory)
预期输出
test-78ac951e-89a6-4199-87a4-db8a1b8b054f export-4cb52be4-8a90-400-ilxr4b-avexport-xavierisp-sjc4--b76888-b3f
test-78ac951e-89a6-4199-87a4-db8a1b8b054f export-9b55f0d5-071d-431-1d2ux0-avexport-xavierisp-sjc4--a4dd85-102
在模式匹配后以单独的引号提供'{$1, $2}'
,从而导致awk
语法不正确。它们需要结合在一起。您的语法使awk
相信'{$1, $2}'
是在.上运行表达式的文件名
awk '$1 ~ /test-/{print $1, $2}'
这不是像那么简单吗
kubectl get pods --all-namespaces --field-selector=spec.nodeName=node1,status.phase!=Succeeded --no-headers | egrep "^test-" | awk '{print $1" "$2}'