我有一個正則表達式: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,文件名也會打印成一行,不會分開 –