
出力ラインから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' ' -f3
3番目のフィールドを選択する必要があります(表示されます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
...
␣
␣
␣
...
cut
3番目のフィールドを要求すると、空白の列が印刷されます。雪上では、各フィールド間に出力されるスペースの数が常に行間で均等ではないため、単に使用することps
はできません。cut -d' ' -f12
...
4.6
0.0
0.0
␣
␣
0.0
0.1
␣
␣
␣
...