我有一个正则表达式:Perl Regex不能在Bash脚本中工作?
^(.+?)(\.[^.]+$|$)
分开文件名和文件扩展名(如果有的话) http://movingtofreedom.org/2008/04/01/regex-match-filename-base-and-extension/
作品在Perl
说$ FILE完美的罚款=” .myfile.form.txt '
$ 1' .myfile.form”和
$ 2“的.txt”,因为他们应该
我知道猛砸正则表达式和Perl的正则表达式是不一样的,但我从来没有使用bash重新匹配直到现在
一个问题,但是当我尝试在使用中的Bash脚本,说...
FILE='.myfile.form.txt'
[[ $FILE =~ ^(.+?)(\.[^.]+$|$) ]]
$ {BASH_REMATCH [1]}就只能把整个文件名(.myfile.form.txt),并且没有在$ {BASH_REMATCH [ 2]}
我想知道有什么问题/在这里进行
感谢您的帮助!
什么让你觉得bash和Perl中接受相同的正则表达式?它们是不同规则的不同规划。 –
如果你想匹配一个bash脚本,你可以使用grep和-P来使用Perl表达式。 (更多信息:$ grep --help) – Tamalero
对不起,我没有澄清。我知道他们不一样,我想知道我可以改变什么,所以它会在Bash脚本中按照预期工作。我确实尝试了'grep -oP',但是我需要它运行的系统不支持-P标志,没有它就安装了grep。再加上grep中的匹配不会保存组匹配。即使使用-o,文件名也会打印成一行,不会分开 –