Я хочу получить только, скажем, третью строку из df -h
вывода.
Какую команду мне использовать?
Это произведет 3-ю строку, независимо от содержания.
df -h | sed -n 3p
Awk является инструментом обработки текста, таким образом, это подходит для этой задачи
df -h | awk 'NR == 3'
Моя первая идея была бы главной конструкцией хвоста.
Пример:
df -h | head -3 | tail -1
head -3
причины вывод для остановки после того, как три строки и tail -1
произведут только последнюю строку.
, С другой стороны, если Вы знаете, как вывод будет похож, Вы могли также использовать grep
для нахождения строк, содержащих определенную строку.
Я предполагаю, что Вы не обязательно ищете третью строку, но для строки что любой упоминания определенный диск (например, /dev/sda3
) или определенная точка монтирования (например, /home
).
Так вместо того, чтобы просто отобразить третью строку, которая небезопасна, потому что выходной порядок мог бы измениться и Вы могли бы получить другой результат, можно отфильтровать вывод содержанием и показать только строки, которые соответствуют определенному шаблону или содержат ключевое слово.
Ваш инструмент для этого grep
.
, Например, если Вы хотите строку об устройстве /dev/sda3
, Вы вводите:
df -h | grep '/dev/sda3'
, Если Вы хотите строку, упоминая Ваш корневой каталог как точку монтирования, используйте:
df -h | grep '/home'
Вы могли также использовать perl
:
df -h | perl -ne 'print if $.==3'
Эти $.
текущий номер строки, таким образом, Вы могли распечатать Энную строку с perl -ne 'print if $.==N'
.
Можно использовать комбинацию head
и tail
:
df -h | head -3 | tail -1
Или
df -h | tail -n +3 | head -1
, Но примечание, которое, df
позволяет фильтровать вывод от опций df
сам, необходимо посмотреть на опции сначала перед использованием любой внешней команды.
Проверка man df
.
Эти df
команда на самом деле принимает аргумент, определяющий файловую систему, которую Вы хотите. Таким образом, Вы могли использовать, например, df /home
или df /dev/sda3
.
, Если Вы намереваетесь проанализировать вывод для сценария, Вы захотите использовать df -P
, чтобы гарантировать, что он никогда не переносится к нескольким строкам. Так, например, Вы могли использовать df -Ph /home | tail -n +2
(но если Вы анализируете вывод для сценария, знать о возможности имен файлов с пробелами в них)