各行のX番目のパラメータを取得します。

各行のX番目のパラメータを取得します。

出力ラインから2番目のパラメータを取得したいと思います。たとえば、

ps aux

3番目の列は、cpu-usage%CPUを含む出力を提供します。

その列のみに出力をフィルタリングするにはどうすればよいですか?

頑張った

ps aux | cut -f 3

しかし、これはうまくいきません

また見なさい:行のX番目の要素をフィルタリングしますか?

答え1

これを達成する方法はいくつかあります。以下は使用例ですawk

ps aux | awk '{print $3}'

$3このコマンドの引数は、デフォルトで一連printのスペースで区切られた各行の3番目のフィールドを印刷します。

答え2

ps書式設定オプションの使用

psカスタム出力形式を指定できます。

ps ax o pcpu

上記のコマンドは、CPU使用量データのリストを返します。

なぜcut動作しないのですか?

cutデフォルトの区切り文字はタブです。ps出力にスペースを使用するので、 を使用してcut -d' ' -f33番目のフィールドを選択する必要があります(表示されますcut)。

カットの使用の問題は、区切り文字に隣接するすべての項目をフィールドとして扱うことです。psフィールド間に複数の隣接する空白が印刷されるため、

$ ps aux
...
para␣␣␣␣␣␣␣462␣␣0.0␣␣0.0␣␣13492␣␣1792␣tty1␣␣␣␣␣Ss+␣␣05:52␣␣␣0:00
root␣␣␣␣␣␣␣484␣␣1.8␣␣0.5␣137020␣45112␣?␣␣␣␣␣␣␣␣Ss␣␣␣05:52␣␣␣0:20
para␣␣␣␣␣␣␣490␣␣0.0␣␣0.0␣␣28072␣␣1708␣tty1␣␣␣␣␣S␣␣␣␣05:52␣␣␣0:00
...
$ ps aux | cut -d' ' -f3
...
...

cut3番目のフィールドを要求すると、空白の列が印刷されます。雪上では、各フィールド間に出力されるスペースの数が常に行間で均等ではないため、単に使用することpsはできません。cut -d' ' -f12

...
4.6
0.0
0.0
0.0
0.1
...

関連情報