2010-06-25 11 views
8

Załóżmy, że mam ps komendę, która wygląda tak:Generowanie listę CSV z Linuksa „ps”

ps -Ao args:80,time,user --sort time 

To da mi „przestrzeń” w separacji zestaw wierszy. Wiersz może wyglądać następująco

paulnath -bash 00:00:00 

chciałbym przekonać ps aby oddzielić od siebie przecinkami (lub zakładek nawet!), Tak, że może być przetwarzany automagicznie przez innych językach. Należy pamiętać, że argumenty będą prawdopodobnie zawierać spacje, więc sprawdzanie przez pole nie będzie samo w sobie działało.

Odpowiedz

14

Można użyć następującej składni, aby umieścić swój własny separator:

ps -Ao "%U,%t,%a" 
+2

% to tak zwany deskryptor formatu AIX. Nie wszystkie kolumny ps mają taki deskryptor. Na przykład kolumna rsz go nie ma. –

-1

Możesz chcieć uzyskać potrzebne informacje z/proc/[0-9] * /. Myślę, że znajdziesz go bardziej programowo dostępnego niż wyjście ps.

0

Jak o:

ps -Ao args:80,time,user --sort time | 
sed 's/\([[:digit:]]\{2\}:\)\{2\}[[:digit:]]\{2\}/,\0,/' 

Jest wrażliwy na format, w tym czasie, i zakłada, procesy nie mają przecinki. Mogą, ale jeśli chcesz uciec, to oczywiście bardziej skomplikowane.

+0

Zostaw wiersza polecenia na końcu, w przeciwnym razie, jeśli linia poleceń zawiera niektóre '' trudno będzie analizować :) –