2015-08-09 3 views
3

Баша:R - система команд с многократной трубой не возвращает стандартный вывод

ps -aux | grep -E "^.*\b[^grep](python).*(runserver).*$" 2>/dev/null | tr -s " " | cut -d " " -f 2 

Это Возвратится правильный результат. (Например.)

1450 
1452 

Этот же код в R

vLog <- system('ps -aux | grep -E "^.*\b[^grep](python).*(runserver).*$" 2>/dev/null | tr -s " " | cut -d " " -f 2', intern = TRUE) 

возвращение character(0)

ответ

3

Просто замените \b с \\b, а также быть в курсе [^grep], который соответствует любому символу, но не g или r или e или p.

vLog <- system('ps -aux | grep -E "^.*\\b[^grep](python).*(runserver).*$" 2>/dev/null | tr -s " " | cut -d " " -f 2', intern = TRUE) 

Пример:

> system('ps -aux | grep -E "^.*\\bpython" 2>/dev/null | tr -s " " | cut -d " " -f 2', intern = TRUE) 
[1] "2519" "2526" "3285" "3291" 
> system('ps -aux | grep -E "^.*\bpython" 2>/dev/null | tr -s " " | cut -d " " -f 2', intern = TRUE) 
character(0) 
Смежные вопросы