Как извлечь только необходимую строку из вывода терминала?

Я хочу получить только, скажем, третью строку из df -h вывода.

Какую команду мне использовать?

16
задан 15 June 2016 в 14:29

7 ответов

Это произведет 3-ю строку, независимо от содержания.

df -h | sed -n 3p
31
ответ дан 16 June 2016 в 00:29

Awk является инструментом обработки текста, таким образом, это подходит для этой задачи

df -h | awk 'NR == 3'
10
ответ дан 16 June 2016 в 00:29

Моя первая идея была бы главной конструкцией хвоста.

Пример:

df -h | head -3 | tail -1

head -3 причины вывод для остановки после того, как три строки и tail -1 произведут только последнюю строку.

, С другой стороны, если Вы знаете, как вывод будет похож, Вы могли также использовать grep для нахождения строк, содержащих определенную строку.

2
ответ дан 16 June 2016 в 00:29

Я предполагаю, что Вы не обязательно ищете третью строку, но для строки что любой упоминания определенный диск (например, /dev/sda3) или определенная точка монтирования (например, /home).

Так вместо того, чтобы просто отобразить третью строку, которая небезопасна, потому что выходной порядок мог бы измениться и Вы могли бы получить другой результат, можно отфильтровать вывод содержанием и показать только строки, которые соответствуют определенному шаблону или содержат ключевое слово.

Ваш инструмент для этого grep.

, Например, если Вы хотите строку об устройстве /dev/sda3, Вы вводите:

df -h | grep '/dev/sda3'

, Если Вы хотите строку, упоминая Ваш корневой каталог как точку монтирования, используйте:

df -h | grep '/home'
6
ответ дан 16 June 2016 в 00:29

Вы могли также использовать perl:

df -h | perl -ne 'print if $.==3' 

Эти $. текущий номер строки, таким образом, Вы могли распечатать Энную строку с perl -ne 'print if $.==N'.

6
ответ дан 16 June 2016 в 00:29

Можно использовать комбинацию head и tail:

df -h | head -3 | tail -1

Или

df -h | tail -n +3 | head -1

, Но примечание, которое, df позволяет фильтровать вывод от опций df сам, необходимо посмотреть на опции сначала перед использованием любой внешней команды.

Проверка man df.

14
ответ дан 16 June 2016 в 00:29

Эти df команда на самом деле принимает аргумент, определяющий файловую систему, которую Вы хотите. Таким образом, Вы могли использовать, например, df /home или df /dev/sda3.

, Если Вы намереваетесь проанализировать вывод для сценария, Вы захотите использовать df -P, чтобы гарантировать, что он никогда не переносится к нескольким строкам. Так, например, Вы могли использовать df -Ph /home | tail -n +2 (но если Вы анализируете вывод для сценария, знать о возможности имен файлов с пробелами в них)

16
ответ дан 16 June 2016 в 00:29

Другие вопросы по тегам:

Похожие вопросы: