2015-09-14 3 views
3

Ниже Выход команды:выражение UNIX отфильтровывать PID от NETSTAT выхода

netstat -plten|grep 45678 
tcp  0  0 :::45678     :::*      LISTEN  0   129367622 109746/java 

Однако, я хочу, чтобы получить «109746» в качестве выхода.

Я пробовал:

netstat -plten|grep 45678|awk ' {print$9}' 

Но это одна дает 109746/java как выход; есть ли какой-либо способ, я могу использовать $9 для соответствия с некоторым регулярным выражением, чтобы получить желаемый результат.

+0

'netstat -plten | grep 45678 | awk '{print $ 9}' | sed -e 's /\/.*$//' ' – hrbrmstr

ответ

4

Вы можете указать awk для обработки /, в дополнение к пробелу, в качестве разделителя полей. Таким образом, считается java отдельное поле и не включается в поле 9:

$ netstat -plten | awk -F'[ /]+' ' /45678/{print$9}' 
109746 

-F'[ /]+' говорит AWK, чтобы использовать пробел, а /, или любое сочетание этих двух в качестве разделителя.

Кроме того, использование grep 45678 перед awk не требуется. В приведенном выше примере условие awk /45678/ выбирает линии, содержащие 45678.

+1

Большое вам спасибо, я очень ценю ваш ответ. – muhdchoaib

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