awk разбивает строки на основе разделителя (по умолчанию используется один или несколько пробелов, то есть табуляция или пробелы ). Чтобы было понятнее, вот ваши данные с данными, разделенными|
CURRENT|ID|STATE|NAME|PROVIDER
*|abcd|active|test-cluster|Imported
efgh|active|prod-cluster|Imported
xyzd|active|dev-cluster|Imported
Как вы можете видеть выше, в первой строке $1
— это CURRENT
, $2
— это ID
и так далее. Во второй строке $1
— это *
, $2
— это abcd
и т. д. Однако в третьей строке $1
— это efgh
, что соответствует столбцу ID. Поскольку в столбце ТЕКУЩИЙ нет ничего, кроме пробела, он игнорируется awk, и поэтому $3
показывает ИМЯ для строк 3 и 4.
Что вам нужно сделать, так это удалить первый столбец, прежде чем отправлять его в awk. Следующая команда должна сделать это за вас.
rancher clusters | cut -b 8- | awk '{ print $3 }'
Команда cut
в приведенном выше конвейере удалит первые 7 байтов в каждой строке и напечатает остальные в STDOUT.Это приведет к тому, что awk
не будет путаться из-за разного количества столбцов в каждой строке.