Я хочу отримати лише скажімо третій рядок 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рядки, що містять певний рядок.