端末出力から必要な行のみを取得するにはどうすればよいですか?


16

df -h出力の3行目のみを取得したいと思います。

どのようなコマンドを使用すればよいですか?


16
将来の注意:この質問は非常に基本的なものです。通常、特定の努力と、尋ねる前に試したことを示すことをお勧めします。
セルギーコロディアズニー

推定静的形式のファイルの3行目を取得するのは合法かもしれませんが、システムの状態に応じてさまざまな出力を持つ診断プログラムの3行目とは異なります。たとえば、現在の3行目が吹く前に新しいドライブ/パーティションをアルファベット順にマウントします。したがって、以下の@ Random832の回答が最適です。
MarkHu

回答:


31

これにより、コンテンツに関係なく、3行目が出力されます。

df -h | sed -n 3p

最小の答えのための+1: df -h|sed -n 3p
EKons

16

dfコマンドは、実際にあなたがしたいファイルシステムを特定する引数を受け入れます。したがって、たとえば、df /homeまたはを使用できますdf /dev/sda3

スクリプトの出力を解析する場合は、df -P複数行に折り返されないことを保証するために使用します。したがって、たとえば、使用できますdf -Ph /home | tail -n +2(ただし、スクリプトの出力を解析する場合は、ファイル名にスペースが含まれている可能性に注意してください)


2
それでおしまい!出力を解析する代わりに、コマンドを使用して必要なものだけを提供します。
fedorqui

1
しかし、OPは3行目df /homeがヘッダーを提供したいと言った。ユーザーの目的を解釈しています。君の言う通りかもね。あなたは間違っているかもしれません、誰が知っていますか?
マイクS

@MikeSその他の多くの答えは、コンテキストなしで行3を取得することをすでにカバーしています。OPが有用な場合にそれを入手できるように、追加情報を提供しました。そしてtail -n +2、ヘッダーを削除します。
Random832

14

headとの組み合わせを使用できますtail

df -h | head -3 | tail -1

または

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

ただしdfdfそれ自体のオプションからの出力をフィルタリングできるため、外部コマンドを使用する前に最初にそれらを確認する必要があります。

確認してくださいman df


4
dfが特定のエントリをフィルター処理できることを言及するための+1
Sergiy Kolodyazhnyy

2
実際、外部プログラムにパイプする前に、データ自体をフィルタリングする方がほとんど常に優れています。
ザックメルテス


6

必ずしも3番目の行を探しているわけではなく、特定のディスク(例/dev/sda3)または特定のマウントポイント(例/home)に言及している行を探していると思います。

したがって、出力の順序が変更されて異なる結果が得られる可能性があるため安全ではない3行目を表示する代わりに、コンテンツで出力をフィルターし、特定のパターンに一致する行またはキーワードを含む行のみを表示できます。

このためのツールはgrepです。

たとえば/dev/sda3、deviceに関する行が必要な場合は、次のように入力します。

df -h | grep '/dev/sda3'

ホームディレクトリをマウントポイントとして記載する行が必要な場合は、以下を使用します。

df -h | grep '/home'

3
またはdf -h /dev/sda3またはdf -h /home(マウントポイントではない場合でも後者は機能します)。
Random832

6

以下も使用できますperl

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

$.あなたが持つN番目のラインを印刷することができるように、現在の行番号ですperl -ne 'print if $.==N'


1
これが、Perlが私の見解でまだ関連している理由です。sedとawkを構造化プログラミング言語と組み合わせます(多くの人は本当にreallyい(と私は同意するかもしれませんが)と言います)は、これらの短いワンライナーには少なくとも一貫性があり、非常に便利です。どうもありがとう。もう少し冗長な場合、これはsedの例と同じくらい簡潔です。
マイクS

@MikeSは喜んでお手伝いします。しかし、Perlハッカーとして、Perlコードはあなたが作ったものと同じくらいいだけであることを指摘しなければなりません。優れたプログラマーはPerlで美しいコードを書くことができます。それは、言語が強制するものではなく、簡単にしないことです。
テルドン

2

私の最初のアイデアは、頭尾構造です。

例:

df -h | head -3 | tail -1

head -33行後に出力を停止しtail -1、最後の行のみを出力します。

あるいは、出力がどのように見えるかがわかっている場合はgrep、特定の文字列を含む行を見つけるためにも使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.