Is there a way to ignore the tabs - Size; Used; Avail; Use%;
Поля вывода команды df
настраиваются с помощью опции --output
:
df -h --output='source'
Приведенное выше выведет только файловую систему список имен
Filesystem
/dev/mapper/vg00-lvroot
--output[=FIELD_LIST]
use the output format defined by FIELD_LIST, or print all fields if FIELD_LIST is omitted.
Если некоторые параметры не поддерживаются, попробуйте следующий обходной путь сawk
:
df -h | awk '{print $1}'
Вы можете использовать awk для запуска новой сортировки для каждого блока:
% awk -v cmd="sort -k2,2" '$1 != prev {close(cmd); prev=$1} {print | cmd}' foo
C 1
C 2
A 1
A 2
B 1
B 2
$1 != prev {close(cmd); prev=$1}
-когда сохраненное значение отличается, у нас есть новый блок, поэтому мы закрываем все ранее начатыеsort
{print | "sort -k2,2"}'
направляет вывод в sort
, запуская его, если он еще не запущен (awk может отслеживать команды, которые он запускает)Вы можете использовать преобразование Шварца(это в основном метод украшения -сортировки -undecorate, о котором вы упоминали в комментарии, но, вероятно, он более эффективен, чем прекрасный ответ муруиз-за использования одного sort
вызова, а не нескольких)-с использованием awk
добавить столбец префикса, который увеличивается с изменением значения в первом столбце, сортировать по столбцу префикса , за которым следует «второй» столбец (, порядковый номер которого временно сместился на 3
из-за наличия столбца префикса ), и, наконец, избавиться от столбца префикса
awk '{print ($1 in a? c+0: ++c)"\t" $0; a[$1]}' file | sort -k1,1n -k3,3 | cut -f 2-