Bagaimana cara saya hanya mengambil jalur yang diperlukan dari keluaran terminal?


16

Saya hanya ingin mendapatkan katakanlah df -houtput baris ketiga .

Perintah apa yang harus saya gunakan?


16
Catatan untuk masa depan: pertanyaan ini sangat mendasar. Biasanya dianjurkan untuk menunjukkan upaya tertentu dan apa yang sudah Anda coba sebelum bertanya.
Sergiy Kolodyazhnyy

Walaupun mungkin sah untuk mendapatkan baris ke-3 file dengan format statis yang dianggap, itu berbeda dari baris ke-3 dari program diagnostik dengan output yang bervariasi tergantung pada kondisi sistem. Misalnya memasang drive / partisi baru secara alfabetis sebelum baris ke-3 Anda saat ini menghancurkannya. Jadi jawaban @ Random832 di bawah ini adalah yang terbaik.
MarkHu

Jawaban:


31

Ini akan menampilkan baris ke-3, terlepas dari kontennya.

df -h | sed -n 3p

1 untuk jawaban terkecil: df -h|sed -n 3p.
EKons

16

The dfperintah benar-benar menerima argumen mengidentifikasi filesystem yang Anda inginkan. Jadi, Anda dapat menggunakan, misalnya, df /homeatau df /dev/sda3.

Jika Anda bermaksud mem-parsing output untuk skrip, Anda akan ingin menggunakannya df -Puntuk memastikan tidak pernah membungkus ke beberapa baris. Jadi, misalnya, Anda bisa menggunakan df -Ph /home | tail -n +2(tetapi jika Anda mengurai output untuk skrip, perhatikan kemungkinan nama file dengan spasi di dalamnya)


2
Itu dia! Alih-alih parsing output, menggunakan perintah untuk memberikan hanya apa yang Anda inginkan.
fedorqui

1
Tapi OP mengatakan dia ingin baris 3. df /homememberikan header. Anda menafsirkan tujuan pengguna. Kamu mungkin benar. Anda mungkin salah, siapa tahu?
Mike S

@MikeS Selusin jawaban lain sudah dibahas untuk mendapatkan baris 3 tanpa konteks. Saya memberikan informasi tambahan sehingga OP akan memilikinya jika berguna baginya. Dan tail -n +2menghapus tajuk.
Random832

14

Anda dapat menggunakan kombinasi dari headdan tail:

df -h | head -3 | tail -1

Atau

df -h | tail -n +3 | head -1

Tetapi perhatikan bahwa, dfmemungkinkan untuk memfilter output dari opsi dfitu sendiri, Anda harus melihatnya terlebih dahulu sebelum menggunakan perintah eksternal.

Periksa man df.


4
+1 untuk menyebutkan bahwa df dapat memfilter entri tertentu
Sergiy Kolodyazhnyy

2
Memang, hampir selalu lebih baik untuk memfilter data itu sendiri sebelum disalurkan ke program eksternal.
Zach Mertes


6

Saya berasumsi Anda tidak perlu mencari baris ketiga, tetapi untuk baris yang menyebutkan disk tertentu (misalnya /dev/sda3) atau titik pemasangan tertentu (misalnya /home).

Jadi, alih-alih hanya menampilkan baris ketiga, yang tidak aman karena urutan output mungkin berubah dan Anda mungkin mendapatkan hasil yang berbeda, Anda dapat memfilter output berdasarkan konten dan hanya menampilkan baris yang cocok dengan pola tertentu atau berisi kata kunci.

Alat Anda untuk ini adalah grep.

Misalnya jika Anda ingin baris tentang perangkat /dev/sda3, Anda mengetik:

df -h | grep '/dev/sda3'

Jika Anda ingin baris yang menyebutkan direktori home Anda sebagai titik mount, gunakan:

df -h | grep '/home'

3
Atau df -h /dev/sda3atau df -h /home(yang terakhir bekerja bahkan jika itu bukan titik mount).
Random832

6

Anda juga bisa menggunakan perl:

df -h | perl -ne 'print if $.==3' 

Ini $.adalah nomor baris saat ini, sehingga Anda dapat mencetak baris ke-N dengan perl -ne 'print if $.==N'.


1
Inilah sebabnya mengapa Perl masih relevan dalam pandangan saya. Ini menggabungkan sed dan awk dengan bahasa pemrograman terstruktur yang (sementara banyak yang akan mengatakan benar-benar jelek [dan saya mungkin setuju]) setidaknya konsisten dan sangat berguna untuk kalimat pendek satu baris ini. Terima kasih terdon. Ini hampir sama ringkasnya dengan contoh sed, jika sedikit lebih bertele-tele.
Mike S

@ Mike senang membantu. Sebagai seorang hacker Perl, saya harus menunjukkan bahwa kode Perl hanya seburuk yang Anda buat. Pemrogram yang baik dapat menulis kode yang indah dalam Perl, hanya saja langauge tidak memaksa Anda dan mudah untuk tidak melakukannya.
terdon

2

Ide pertama saya adalah konstruksi kepala-ekor.

Contoh:

df -h | head -3 | tail -1

head -3menyebabkan output berhenti setelah tiga baris dan tail -1hanya akan menghasilkan baris terakhir.

Atau, jika Anda tahu, bagaimana output akan terlihat, Anda juga bisa menggunakan grepuntuk menemukan garis yang berisi string tertentu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.