Использование awk для печати выборочных столбцов при выполнении условия - PullRequest
1 голос
/ 02 апреля 2020

Проблема: я хочу перечислить все модули, соответствующие выражению «test-», для которых мое выражение работает хорошо, и затем я хочу вывести только $ 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

Ответы [ 2 ]

2 голосов
/ 02 апреля 2020

У вас неправильный синтаксис awk, предоставив '{$1, $2}' в отдельных кавычках после сопоставления с образцом. Их нужно объединить в одно целое. Синтаксис, который вы используете, заставляет awk считать, что '{$1, $2}' как имя файла для запуска выражения.

awk '$1 ~ /test-/{print $1, $2}'
0 голосов
/ 02 апреля 2020

Разве это не так просто, как:

kubectl get pods --all-namespaces --field-selector=spec.nodeName=node1,status.phase!=Succeeded --no-headers | egrep "^test-" | awk '{print $1" "$2}'

?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...