Для первой строки ввода вы должны перебрать все поля, чтобы найти поле, равное строке free
. Вы должны запомнить этот номер поля, а затем использовать его для вывода только этого поля :
awk 'NR==1 { for (i=1;i<=NF;++i) if ($i=="free") { n=i; break }} { print $n }'
NR==1
заставляет следующий блок выполняться только для самой первой строки, то есть строки заголовка. Переменная n
будет содержать номер поля free
.
Тестирование на vmstat 1 1|tail -2
представленных вами данных (, считанных из файла с именем file
здесь):
$ awk 'NR==1 { for (i=1;i<=NF;++i) if ($i=="free") { n=i; break }} { print $n }' file
free
24998752
В моем исходном ответе использовалось FNR
, а не NR
. К сожалению, awk
в SunOS не имеет переменной FNR
, но в этом случае можно использовать переменную NR
, ничего не меняя.
Также обратите внимание, что вывод vmstat
в некоторых системах показывает столбец free
какfre
(OpenBSD, например ). Это означает, что вы можете использовать $i ~ "^fre"
вместо $i == "free"
.
Цветное завершение zsh настроено с помощью list-colors
zstyle (подробности см. в info zsh list-colors
).
Ваш ~/.zshrc
или любой другой файл настройки, который он вызывает, может иметь что-то вроде:
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
Чтобы это основывалось на содержимом переменной $LS_COLORS
(, чтобы вы получали те же цвета в завершениях zsh, что и в выводе GNU ls --color
).
$LS_COLORS
— это переменная, используемая GNU ls
, и обычно устанавливается вызовом чего-то вроде:
eval "$(dircolors --sh ~/.dircolors)"
(может быть раньше в вашем ~/.zshrc
или в вашем~/.zprofile
).
В
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
однако $LC_COLORS
расширяется и разделяется на:
во время интерпретации ~/.zshrc
.
Если вы измените $LS_COLORS
, эта команда zstyle
не будет запускаться снова автоматически, и если вы снова используете источник ~/.zshrc
после изменения $LS_COLORS
, возможно, команда dircolors
повторно создает $LS_COLORS
на основе конфигурации, сохраненной в ~/.dircolors
, также будет запущен снова, отменяя ваши изменения.
Итак, вам нужно:
list-colors
zstyle определен в ваших файлах запуска $LS_COLORS
, узнайте, как этот $LS_COLORS
определяется, и исправьте его. А если нет, настройте этот вызов на zstyle
, чтобы он соответствовал вашим цветовым предпочтениям.