awk по умолчанию разделяет записи на поля на основе непрерывных последовательностей пробелов и игнорирует начальные конечные пробелы. Поскольку ваше первое «поле» иногда пусто, для awk его не существует. Учитывая это, есть несколько способов вывести столбец NAME, самый простой из которых — считать поля с конца записи, а не с ее начала :
.$ awk '{print $NF}' file
PROVIDER
Imported
Imported
Imported
$
$ awk '{print $(NF-1)}' file
NAME
test-cluster
prod-cluster
dev-cluster
$
$ awk '{print $(NF-2)}' file
STATE
active
active
active
$
$ awk '{print $(NF-3)}' file
ID
abcd
efgh
xyzd
$
$ awk '{print (NF>4 ? $(NF-4) : "")}' file
CURRENT
*
$
Вам нужно выполнить некоторые математические операции с последним, чтобы $(NF-4)
не приводило к печати $0
, когда NF равно 4. Вы можете вычислить предполагаемое количество полей вместо жесткого -кодирования 4 путем подсчета сколько полей в строке заголовка:
$ awk 'NR==1{max=NF-1} {print (NF>max ? $(NF-max) : "")}' file
CURRENT
*
$
zpool scrub pool01
Должно быть достаточно, чтобы проверить контрольные суммы и восстановить их в правильном блоке в пуле