Intereting Posts
Поведение команды отличается при выполнении другим пользователем (через su -c) Извлечь дату из переменной в другом формате Подсветка клавиатуры очень тускла Что обозначает символ @ в начале пути сокета домена unix в Linux? Что вызывает повреждение сегментации в обслуживании? Нужно ли избавляться от процесса зомби? Слейте ненулевые блоки огромного (разреженного) файла A в огромный файл B grepping переменная и добавление 1 к ней Как я могу отлаживать прерывистый сбой mkinitrd при обновлении ядра в CentOS 7? Может ли несколько пользователей одновременно выполнять команды, используя tmate с отдельными курсорами в одном сеансе? Инициализировать как сценарий оболочки Как я могу передать вывод программы или функции в переменную? Как иметь очередь процессов в AIX, например, xargs с «–max-procs»? Как мне выполнить ls, а затем отсортировать результаты по дате? Отправить обновленную страницу руководства

Выделите n-й столбец вывода ps

Я пытаюсь найти лучший способ выделить конкретный столбец некоторого вывода. В частности, я пытаюсь выделить 9-й столбец (который составляет %cpu для команды:

 ps -eo pid,ppid,time,user,tty,%cpu,%mem,vsize,command --sort -%cpu 

Я нашел здесь тему, касающуюся подобной темы, где принятым ответом было использование sed для добавления в цвет. Это то, с чем я пытаюсь пойти, но я не могу заставить его работать.

Вот что у меня есть до сих пор:

 ps -eo pid,ppid,time,user,tty,%cpu,%mem,vsize,command --sort -%cpu | head | sed -e $'s/ *[^ ]* /\033[1;33m&\033[0m/' 

Что выделяет первый столбец светло-желтого цвета. Я пытаюсь заставить регулярное выражение работать, поэтому он получает 9-й столбец и просто не может заставить его работать.

В том же скрипте я буду делать то же самое, кроме выделения 10-го столбца (памяти). Поэтому я надеялся, что есть более простой способ справиться с этим.

don_crissti опубликовал чрезвычайно простое решение, просто добавив нужный номер столбца до последней заключительной цитаты:

  ps -eo pid,ppid,time,user,tty,%cpu,%mem,vsize,command --sort -%cpu | head | sed -e $'s/ *[^ ]* /\033[1;33m&\033[0m/6'