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