Chcę uzyskać tylko powiedzmy trzeci wiersz df -hwyniku.
Jakiego rodzaju polecenia powinienem użyć?
Chcę uzyskać tylko powiedzmy trzeci wiersz df -hwyniku.
Jakiego rodzaju polecenia powinienem użyć?
Odpowiedzi:
dfKomenda faktycznie akceptuje argument identyfikujący system plików, który chcesz. Możesz na przykład użyć df /homelub df /dev/sda3.
Jeśli zamierzasz przeanalizować dane wyjściowe skryptu, możesz użyć go, df -Paby 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 /homezawiera nagłówek. Interpretujesz cel użytkownika. Możesz mieć rację. Możesz się mylić, kto wie?
tail -n +2usuwa nagłówek.
Możesz użyć kombinacji headi tail:
df -h | head -3 | tail -1
Lub
df -h | tail -n +3 | head -1
Zauważ jednak, że dfpozwala 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/sda3lub 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 -3powoduje, że wyjście zatrzymuje się po trzech wierszach i tail -1wyświetla tylko ostatni wiersz.
Alternatywnie, jeśli wiesz, jak będzie wyglądał wynik, możesz również użyć grepdo znalezienia wierszy zawierających określony ciąg znaków.