2

のPIDフィールドを取得しようとしていますps -aux。を使用してこれを達成できることはわかっていますが、実際には、コマンドps -aux | awk '{print $2}'を使用して同じことができるかどうかを確認したいと思いました。cut私の考えは、区切り文字を指定して、次のように2番目のフィールドを選択することです。

 ps -aux | cut -d[delimiter] -f2

スペースを区切り文字(' ')として使用しても機能せず、タブ(\t)も機能しませんでした。

一般に、Linuxで空白の正確な文字を見つけるにはどうすればよいですか?

4

4 に答える 4

3

他の方法では印刷できない、または似たような文字 (空白など) を識別するには、出力をxxdや などのツールにパイプしますod -c。たとえば、これは各文字の 16 進値とテキストの両方を出力して、簡単に検索できるようにします。

ps -aux | xxd -g 1        # -g 1 outputs each character individually

ps -auxただし、フィールド間に複数のスペースを使用することが問題だと思います。cutは複数の連続した区切り文字を処理しないため、最初のスペースと 2 番目のスペースの間にあるものは何でも出力します。つまり、何も出力しません。

本当にカットを使用したい場合は、先頭のスペースと重複するスペースの両方を削除する必要があります。

ps -aux | sed 's/^ *//;s/  */ /g' | cut -d' ' -f2
于 2012-12-27T15:18:49.980 に答える
2

カットは、区切りとして複数文字をサポートしていません。本当にカットを使用したい場合は、フィールド間に複数の空白があります。

ps aux | sed 's/  */ /g' | cut -d ' ' -f 2
于 2012-12-27T15:22:43.527 に答える
1

コマンドの PID を取得するには、次のpsようにします。

ps -aux | cut -c10-15

于 2012-12-27T15:22:12.660 に答える
1

参考までに:uで使用するps auxは、 に従って、次のことを意味しman psます。

u ユーザー指向のフォーマットを表示する

つまり、人間が読める出力を明示的に要求してから、何らかのツールで解析しますか? それはあまり適切ではありません (控えめに言っても)。の出力をフォーマットする必要がある場合は、 (または) オプションpsを使用してください。したがって:-o--formatps

ps ax -o pid

はるかに良くなります。

于 2012-12-27T20:51:20.627 に答える