Terminal çıkışından yalnızca gerekli hattı nasıl alabilirim?


16

Diyelim ki sadece üçüncü satır df -hçıktı almak istiyorum .

Ne tür bir komut kullanmalıyım?


16
Gelecek için not: Bu soru çok temel. Genellikle belirli bir çaba ve sormadan önce ne denediğinizi göstermeniz önerilir.
Sergiy Kolodyazhnyy

Bir dosyanın 3. satırının varsayılan statik biçime sahip olması yasal olsa da, sistemin durumuna bağlı olarak çeşitli çıktıları olan bir tanılama programının 3. satırından farklıdır. Örneğin, mevcut 3. satırınız patlamadan önce yeni bir sürücüyü / bölümü alfabetik olarak monte etmek. Böylece @ Random832'nin aşağıdaki cevabı en iyisidir.
MarkHu

Yanıtlar:


31

Bu, içerikten bağımsız olarak 3. satırın çıktısını verir.

df -h | sed -n 3p

En küçük cevap 1: df -h|sed -n 3p.
EKons

16

dfKomut aslında istediğiniz dosya sistemini tanımlayan bir argüman kabul eder. Yani örneğin, kullanın olabilir df /homeveya df /dev/sda3.

Bir komut dosyasının çıktısını ayrıştırmak istiyorsanız, df -Pasla birden fazla satıra sarılmamasını sağlamak için kullanmak istersiniz . Örneğin, kullanabilirsiniz df -Ph /home | tail -n +2(ancak bir komut dosyası için çıktıyı ayrıştırıyorsanız, içinde boşluk bulunan dosya adlarının bulunma olasılığının farkında olun)


2
Bu kadar! Çıktıyı ayrıştırmak yerine, tam olarak istediğinizi sağlamak için komutu kullanın .
Fedorqui

1
Ancak OP 3. satır istediğini söyledi df /home. Kullanıcının amacını yorumluyorsunuz. Haklı olabilirsin. Yanılıyor olabilirsiniz, kim bilir?
Mike S

@MikeS Başka bir düzine cevap daha önce bağlam 3 olmadan satır 3 almayı içeriyordu. OP'nin kendisi için faydalı olması durumunda buna sahip olması için ek bilgiler sağladım. Ve tail -n +2başlığı kaldırır.
Random832

14

Sen bir arada kullanabilir headve tail:

df -h | head -3 | tail -1

Veya

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

Ancak df, çıktıyı dfkendi seçeneklerinden filtrelemeye izin verdiğini, herhangi bir harici komutu kullanmadan önce bunlara bakmanız gerektiğini unutmayın.

Kontrol edin man df.


4
+1, df'nin belirli girişleri filtreleyebileceğini belirtmek için
Sergiy Kolodyazhnyy

2
Gerçekten de, harici programlara bağlanmadan önce verilerin kendisini filtrelemek neredeyse her zaman daha iyidir.
Zach Mertes


6

Mutlaka üçüncü satırı değil, belirli bir diski (örneğin /dev/sda3) veya belirli bir bağlama noktasını (örn /home.

Bu nedenle, çıktı sırasının değişebileceği ve farklı bir sonuç alabileceğiniz için güvenli olmayan üçüncü satırı görüntülemek yerine, çıktıyı içeriğe göre filtreleyebilir ve yalnızca belirli bir kalıpla eşleşen veya bir anahtar kelime içeren satırları gösterebilirsiniz.

Bunun için aracınız grep.

Örneğin /dev/sda3, aygıtla ilgili satırı istiyorsanız, şunu yazın:

df -h | grep '/dev/sda3'

Giriş dizininizden bahseden satırın bağlama noktası olmasını istiyorsanız, şunu kullanın:

df -h | grep '/home'

3
Veya df -h /dev/sda3veya df -h /home(ikincisi bir bağlama noktası olmasa bile çalışır).
Random832

6

Ayrıca perlşunları kullanabilirsiniz :

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

$.Birlikte N. hattını yazdırmak böylece, geçerli satır numarasıdır perl -ne 'print if $.==N'.


1
Bu yüzden Perl benim görüşüme göre hala alakalı. Sed ve awk'yi (birçoğu gerçekten çirkin olsa da [ve aynı fikirde olabilirim]) bu kısa tek satırlar için en azından tutarlı ve çok yararlı olan yapılandırılmış bir programlama dili ile birleştirir. Teşekkürler terdon. Bu, biraz daha ayrıntılı ise, sed örneği kadar neredeyse özlüdür.
Mike S

@MikeS yardımcı olmaktan mutluluk duyar. Ancak bir Perl hacker olarak, Perl kodunun sadece sizin yaptığınız kadar çirkin olduğunu belirtmeliyim. İyi programcılar Perl'de güzel kod yazabilir, sadece dil sizi zorlamıyor ve yapması kolay değil.
terdon

2

İlk fikrim baş-kuyruk-yapı olurdu.

Misal:

df -h | head -3 | tail -1

head -3çıktının üç satırdan sonra durmasına neden olur ve tail -1yalnızca son satırın çıktısını alır.

Alternatif olarak, çıktının nasıl görüneceğini biliyorsanız, grepbelirli bir dize içeren satırları bulmak için de kullanabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.