团队,我读了很多帖子,但我不清楚。
我需要了解如何处理这个问题。。我让xargs做了一些评估,然后管道到awk,但得到了语法错误
file.log
node1,
node2,
node3,
xargs和awk 的失败表达
cat file.log | awk -F ',' '{print $1}' | xargs -l1 -- sh -c 'kubectl get pods --all-namespaces --no-headers --field-selector spec.nodeName=$1 | awk "{if ($1 ~ "team-") print $1,$2}"' --
通过这里
cat file.log | awk -F ',' '{print $1}' | xargs -l1 -- sh -c 'kubectl get pods --all-namespaces --no-headers --field-selector spec.nodeName=$1
只要我添加awk部分。。我不明白。
输出:
awk: line 1: syntax error at or near )
我找到的另一个解决方案是将awk从xargs--中移出。所以下面的工作。但是我怎么能把awk放进去呢,因为我想打印xargs中使用的$1,看看它与awk打印的内容之间的相关性。
WORKS
--field-selector spec.nodeName=$1' -- | awk '{if ($1 ~ "team-") print $1,$2}'
FAILS
--field-selector spec.nodeName=$1 | awk '{if ($1 ~ "team-") print $1,$2}' --
在"如何在另一个单引号短语中使用awk的单引号?"的帮助下解决了这个问题
以下是对我有效的方法。我在dQuotes中引用了awk
,然后在中逃离了$
cat file.log |
awk -F ',' '{print $1}' |
xargs -l1 -- sh -c
'kubectl get pods --all-namespaces --no-headers
--field-selector spec.nodeName=$1 |
awk "{if ($1 ~ "team-") print $1,$2}"
' --