帮助使用perl正则表达式解析值

时间:2011-04-09 02:44:15

标签: regex perl

我试图弄清楚perl正则表达式以提取以下值:( / home / mail / dump dirs总是相同的)。感谢。

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 个答案:

答案 0 :(得分:2)

也许使用splitbasename

答案 1 :(得分:1)

这类似于this.

拆分“/”并获取最后一项

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

答案 2 :(得分:1)

以下perl正则表达式将仅在最后的正斜杠之后给出字符。

s=.*/==

示例:

$ echo 'wxr-xr-x   - mail_hd mail_users          0 2011-03-16 18:46 /home/mail/dump/abc' | perl -pe 's=.*/=='
abc

答案 3 :(得分:0)

也许这很有用,应该返回你需要的东西。

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

它匹配/home/mail/dump/之后的所有内容,直到行结束