2010-06-25 11 views
8

Supongamos que tengo un comando ps que tiene este aspecto:Generar una lista CSV desde 'ps' Linux

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

Me dará un "espacio" separado conjunto de filas. Una fila podría tener este aspecto

paulnath -bash 00:00:00 

me gustaría convencer a ps para delimitar por comas (o incluso pestañas!), De tal manera que pueda ser procesado por automagicamente otros idiomas. Tenga en cuenta que args probablemente tendrá espacios en él, por lo tanto, el despertar por campo no funcionará per se.

Respuesta

14

Usted puede usar la siguiente sintaxis para poner su propio delimitador:

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

El% es el denominado descriptor de formato AIX. No todas las columnas ps tienen dicho descriptor. Por ejemplo, la columna rsz no lo tiene. –

-1

Es posible que desee obtener la información que necesita de/proc/[0-9] * /. Creo que lo encontrarás más accesible por programación que la salida de ps.

0

¿Qué tal:

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

Esta es sensible al formato, incluyendo el tiempo, y asume los procesos no tienen comas. Pueden, pero si quieres escapar es obviamente más complicado.

+0

Deje la línea de comandos al final, de lo contrario, si la línea de comandos contiene un poco de '' Será difícil de analizar :) –

Cuestiones relacionadas