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