2015-02-17 3 views
0

Я пытаюсь сделать вывод ps -ef более читаемым в Red Hat Linux. Я знаю, что это задавали много раз, но у меня есть несколько java-процессов, которые я должен отслеживать, и длина строки для каждого процесса составляет не более 500 символов, но каждая строка имеет разную длину. Мне нужны первые 14 символов, поэтому я получаю pid и около последних 40 символов той же строки, чтобы получить имя.Как удалить середину строк из ps?

То, что я получил до сих пор:

ps -ef | grep -v 'eclipse' | grep java | cut -c1-14 

который разбирает мои копии Затмения, работающих под управлением, а затем получает другие процессы Java, а затем вырезает в 1-й части линии.

Я знаю, как получить последнюю часть, используя rev обе стороны разреза, но я не могу разобраться, как объединить 2 вместе.

+0

Если вы только что после java-процессов, почему бы не использовать jps (является частью дистрибутива VM с stantdard от oracle)? – BigMike

+2

Посмотрите на 'ps -o format', чтобы получить именно нужные вам поля. – tripleee

+0

Не могли бы вы разместить образец нужного результата? – fedorqui

ответ

1

Вы можете дать cut несколько регионов, которые нужно разрезать, но он не может срезать с конца, поэтому, чтобы вырезать последние 40 символов, вам нужно знать длину линии заранее.

я предлагаю использовать более мощный инструмент, как gawk:

ps -ef|gawk ' 
/eclipse/ {next} 
/java/ { 
    printf("%-10s %8s ...%s\n", $1, $2, substr($0,length()-40)); 
}' 

, который также позволяет форматировать вывод красиво.

Смежные вопросы