2013-11-06 2 views
2

Я хотел бы захватить вывод верхней команды для использования в другой программе, но мне нужна только определенная информация, точнее мне нужны только столбцы USER, PID, CPU, COMMAND. У меня уже есть команда top -b -n 1 | sed -n '7,12p', чтобы отфильтровать первые 5 результатов, но я не могу идти дальше, потому что я мало знаю о sed/awk.Linux top -b показать только определенные столбцы

Пример: вот что я получаю

PID USER PR NI VIRT RES SHR S %CPU %MEM  TIME+ COMMAND 
4 root  20 0 98748 50608 4608 S 6.4 4.9 212:12.16 X 
1 root  20 0 2132 128  96 S 0.0 0.0 0:07.62 init 
2 root  20 0  0  0  0 S 0.0 0.0 0:00.01 kthreadd 
3 root  20 0  0  0  0 S 0.0 0.0 7:28.54 ksoftirqd/0 

и вот что я хочу

PID USER %CPU COMMAND 
4 root 6.4 X 
1 root 0.0 init 
2 root 0.0 kthreadd 
3 root 0.0 ksoftirqd/0 
+1

На странице руководства объясняется, как выбрать столбцы, найдите опцию -o. – aet

+1

@aet это не в моей версии, -o используется для сортировки по полям. – axujen

ответ

2

пас на:

awk '{print $1,$2,$9,$NF}' 
+0

это сработало, добавлено некоторое форматирование, поэтому финальная команда выглядит как «top -b -n 1 -o +% CPU | sed -n '7,12p' | awk '{printf "% 6s% -4s% -4s% -s \ n", $ 1, $ 2, $ 9, $ NF}' ' – axujen

0

Все, вместе взятые.

top -b -n 1 | awk 'NR>6 && NR<13 {printf "%6s %-4s %-4s %-s\n",$1,$2,$9,$NF}' 
Смежные вопросы