「ps」からPID、UID、およびコマンドフィールドを抽出する必要があり、次のようにしてみました。
ps -L u n | cut -f 1,2,13
何らかの理由で、これはcutコマンドがまったくないので動作します。通常のps出力を返すだけです。次に、試しました
ps -L u n | tr -s " " | cut -d " " -f 1,2,13
そして、これは全くナンセンスを返します。次に、私はそれをこれで遊んでみました:
ps -L u n | tr -s " " | cut -d " " -f 2,3,14
そして、これはどういうわけか私が必要とするものを返します(ほとんど、そしてそれがほとんど機能する理由がわかりません)。ただし、コマンドフィールドを途中で切り取ります。どうすれば必要なものを入手できますか?
ps
はスペース区切りを出力していますが、cut
なしで-d
はタブ文字を使用します。 tr -s
はスペースを一緒に圧縮して、必要な間隔を広げますが、最初のスペースのセット(1に圧縮)があるため、各フィールドに1を追加する必要があるので注意してください。また、各Wordのコマンドにはスペースがあります。これはうまくいくはずです:
ps -L u n | tr -s " " | cut -d " " -f 2,3,14-
カットを使用する特別な理由はありますか?
これはあなたが望むことをすると思います:
ps -eopid,uid,cmd
次のように、awkを使用してコマンドをクリーンアップできます。
ps -L u n | awk '{ print $1,$2,$13 }'