Chcę uzyskać tylko powiedzmy trzeci wiersz df -h
wyniku.
Jakiego rodzaju polecenia powinienem użyć?
Chcę uzyskać tylko powiedzmy trzeci wiersz df -h
wyniku.
Jakiego rodzaju polecenia powinienem użyć?
Odpowiedzi:
df
Komenda faktycznie akceptuje argument identyfikujący system plików, który chcesz. Możesz na przykład użyć df /home
lub df /dev/sda3
.
Jeśli zamierzasz przeanalizować dane wyjściowe skryptu, możesz użyć go, df -P
aby zagwarantować, że nigdy nie zostanie zawinięty w wiele wierszy. Na przykład możesz użyć df -Ph /home | tail -n +2
(ale jeśli analizujesz dane wyjściowe skryptu, pamiętaj o możliwości nazw plików ze spacjami)
df /home
zawiera nagłówek. Interpretujesz cel użytkownika. Możesz mieć rację. Możesz się mylić, kto wie?
tail -n +2
usuwa nagłówek.
Możesz użyć kombinacji head
i tail
:
df -h | head -3 | tail -1
Lub
df -h | tail -n +3 | head -1
Zauważ jednak, że df
pozwala odfiltrować dane wyjściowe z samych opcji df
, powinieneś najpierw je przejrzeć przed użyciem jakiejkolwiek komendy zewnętrznej.
Sprawdzić man df
.
Awk to narzędzie do przetwarzania tekstu, więc jest odpowiednie do tego zadania
df -h | awk 'NR == 3'
Zakładam, że niekoniecznie szukasz trzeciej linii, ale linii, która wspomina konkretny dysk (np. /dev/sda3
) Lub określony punkt montowania (np /home
.).
Dlatego zamiast wyświetlać tylko trzeci wiersz, co jest niepewne, ponieważ kolejność wyjściowa może się zmienić i może pojawić się inny wynik, możesz filtrować dane wyjściowe według zawartości i wyświetlać tylko linie pasujące do określonego wzorca lub zawierające słowo kluczowe.
Twoje narzędzie do tego jest grep
.
Na przykład, jeśli chcesz wiersz o urządzeniu /dev/sda3
, wpisz:
df -h | grep '/dev/sda3'
Jeśli chcesz, aby wiersz wskazujący twój katalog domowy był punktem montowania, użyj:
df -h | grep '/home'
df -h /dev/sda3
lub df -h /home
(ten ostatni działa, nawet jeśli nie jest to punkt montowania).
Możesz również użyć perl
:
df -h | perl -ne 'print if $.==3'
Jest $.
to bieżący numer wiersza, więc możesz wydrukować N-ty wiersz za pomocą perl -ne 'print if $.==N'
.
Moim pierwszym pomysłem będzie konstrukcja głowy-ogona.
Przykład:
df -h | head -3 | tail -1
head -3
powoduje, że wyjście zatrzymuje się po trzech wierszach i tail -1
wyświetla tylko ostatni wiersz.
Alternatywnie, jeśli wiesz, jak będzie wyglądał wynik, możesz również użyć grep
do znalezienia wierszy zawierających określony ciąg znaków.