使用输出管道连接到awk的xargs会引发语法错误



团队,我读了很多帖子,但我不清楚。

我需要了解如何处理这个问题。。我让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}"
' --

最新更新