помочь разобрать значения с помощью регулярного выражения Perl - PullRequest
0 голосов
/ 09 апреля 2011

Я застрял, пытаясь определить регулярное выражение perl для извлечения следующих значений: (каталоги / home / mail / dump всегда будут одинаковыми). Спасибо.

abc

123456

Это вывод:

drwxr-xr-x   - mail_hd mail_users          0 2011-03-26 20:12 /home/mail/dump/abc
drwxr-xr-x   - mail_hd mail_users          0 2011-04-15 09:10 /home/mail/dump/123456

Ответы [ 4 ]

2 голосов
/ 09 апреля 2011

Возможно, вместо этого используйте split и basename.

1 голос
/ 09 апреля 2011

Следующее регулярное выражение perl выдаст только символы после последней косой черты.

s=.*/==

Пример:

$ echo 'wxr-xr-x   - mail_hd mail_users          0 2011-03-16 18:46 /home/mail/dump/abc' | perl -pe 's=.*/=='
abc
1 голос
/ 09 апреля 2011

Это похоже на это.

Разделитесь на "/" и получите последний элемент

awk -F"/" '{print $NF}' file

Ruby (1.9+) (аналогично Perl)

$ ruby -ne 'print $_.sub(/.*\//,"")' file
abc
123456

$ ruby -F"/" -ane 'print $F[-1]' file
abc
123456
0 голосов
/ 09 апреля 2011

Может быть, это полезно, должно вернуть то, что вам нужно.

if ($subject =~ m!/home/mail/dump/(.*)$!) {
    $result = $1;
} else {
    $result = "";
}

соответствует всему после /home/mail/dump/ до конца строки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...