Вы можете использовать awk
для этого:
awk 'BEGIN {print "GB FREE\n--------"} NR>2{print $4}' INPUT_FILE
Пояснение:
- Мы используем оператор
awk's BEGIN
, чтобы напечатать заголовок, который GB FREE and -------
. Это потому, что заголовок в вашем входном файле имеет пробелы в заголовках. Это может сбить сценарий awk
.
- Во-вторых, мы используем
awk's
встроенную переменную NR
, в которой хранится номер строки. Поскольку мы не хотим, чтобы строки 1 и 2 печатались, мы сохраняем условие NR>2
. Таким образом, awk пропустит первые две строки и начнет печатать со строки 3.
- В
awk
по умолчанию в качестве разделителя или разделителя полей используется пробел (один или несколько). Так как ваш файл имеет это, нам не нужно устанавливать встроенную переменную FS
. Каждое поле, разделенное пробелом, становится столбцом и может быть доступно с помощью $
и column number
. Поскольку вам нужен столбец GB FREE
, равный 4, мы делаем print $4
.
- Чтобы сохранить больше условий, например, печатать только те строки, где
column 1
имеет DISK_2
, мы добавляем еще один оператор шаблона. Использование NR>2 && $1~/DISK_2/
гарантирует, что мы не печатаем строки 1 и 2, ищем строки, в которых column 1
содержит DISK_2
, и печатаем column 4
этих строк.
Примечание: Если вы не очень заботитесь о заголовочной части, вы можете сократить эту однострочную до следующего (в зависимости от ваших требований):
awk 'NR>2{print $4}' INPUT_FILE
или
awk 'NR>2 && $1~/DISK_2/{print $4}' INPUT_FILE
Тест:
[jaypal:~/Temp] cat file
DISKGROUP NAME GB ALLOCATED GB USED GB FREE USABLE GB PCT USED STATUS
-------------- --------------- --------------- --------------- --------------- -------- --------------------
DISK_1 1,117.40 390.48 726.92 223.78 34.95 MOUNTED
DISK_2 1,117.40 65.97 1,051.43 386.04 5.90 MOUNTED
[jaypal:~/Temp] awk 'BEGIN {print "GB FREE\n--------"} NR>2{print $4}' file
GB FREE
--------
726.92
1,051.43
Чтобы добавить фильтры, как указано в комментариях:
[jaypal:~/Temp] awk 'BEGIN {print "GB FREE\n--------"} NR>2 && $1~/DISK_2/{print $4}' file
GB FREE
--------
1,051.43