2015-05-18 3 views
1

Я работал с perl-скриптом, и я пытался работать с регулярными выражениями, чтобы отфильтровать последнее слово каждой строки из выхода системы. я использовал следующую команду, чтобы получить список всех служб, команда: «сервис --status-все» команда выведет список всех доступных услуг, например:Perl - регулярное выражение, чтобы отфильтровать последнее слово

rdisc is stopped 
rpcbind (pid 1339) running... 

Я бросаю вывод в массив и чавканье в каждой новой строке:

chomp(my @service_data_1 = qx/$command_3/); 

Я хочу только распечатать услуги, которые пользователь запрашивает и информирует пользователя, если служба запущена или остановлена.

Я хотел бы знать, как отфильтровать последнее слово каждой строки с помощью regex, я не могу найти какие-либо решения моей проблемы нигде, а не здесь, в stackoverflow. Любая помощь или вклад в это были бы весьма признательны.

+0

Каков ваш ожидаемый результат? – serenesat

+0

Что вы имеете в виду как «сервис статус»? – Sobrique

ответ

0

Вы можете использовать следующее регулярное выражение, чтобы соответствовать последние слова .. и заменить их '' (пустая строка)

\w+$  // but this wont match words ending with other than [a-zA-Z0-9_] 
1
print ("\n$1") if(/(\s+\S+$)/); 

Это регулярное выражение будет напечатано последнее слово каждой строки. \s+ соответствует пробелу, \S+ соответствует всем, кроме пробела. Together \s+\S+$ соответствует пробелу, за которым следует любое слово, включая специальные символы в конце строки.

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