Применить запятую в awk для каждого элемента, кроме последнего - PullRequest
1 голос
/ 25 сентября 2019

Я хочу получить список всех узлов kubernetes, разделенных запятой, для использования его в переменной NO_PROXY env, и написал следующие команды:

kgnoowide | grep -v NAME | awk '{printf  "%s,", $1}'

Само по себе это работает, но при этом отсутствуют некоторые детали.: При наличии трех узлов, таких как

node1
node2
node3

, моя команда awk возвращает node1,node2,node3,

Так что последняя запятая неверна, идеальный вывод будет node1,node2,node3.Я знаю, что это небольшая проблема, которая может быть легко решена простым удалением запятой при вставке.Но мне интересно, как решить эту проблему с помощью awk, который сам по себе является очень мощным инструментом, поэтому я предполагаю, что это возможно.И это также актуально для последующего использования в скриптах, например, при генерации записи ~/.bashrc с правильной переменной NO_PROXY.

Ответы [ 2 ]

4 голосов
/ 25 сентября 2019

Вам не нужен grep там

kgnoowide | awk '!/NAME/{out=(out sep $0);sep=","} END{print out}'
0 голосов
/ 25 сентября 2019

Я бы пошел на Perl за AWK для этого.Что-то вроде

kgnoowide | perl -lane 'push @nodes, $F[0] unless /NAME/; END { $, = ","; print @nodes }'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...