これは、RegExを使用するポータブルBashスクリプトのBash開発とコーディングに関するものです。
MacでBash RegExを使用すると、次のことができます。
coconut-mac$ a='bananacoconutman'; [[ "$a" =~ banana(.*?)man ]] && echo FOUND ${BASH_REMATCH[1]}
FOUND coconut
いいね 多くの場所で役立ちます。のような。
私がこれをしようとすると、失敗します:
coconut-mac$ a='<title>coconut</title>'; [[ "$a" =~ \<title\>(.*?)\</title\> ]] && echo FOUND ${BASH_REMATCH[1]}
まったく同じコマンドが実行され、完全ペンギンに:
coconut-linux$ a='<title>coconut</title>'; [[ "$a" =~ \<title\>(.*?)\</title\> ]] && echo FOUND ${BASH_REMATCH[1]}
FOUND coconut
- どうして?
- スクリプトを移植可能にするために修正する方法は?
編集:Macの場合:
OS X version: 10.8.2
Bash version: 4.2.37(2)-release
Ubuntu 12.04 LTSの場合:
Linux kernel version: 3.2.0-29-generic-pae
Linux version: Ubuntu 12.04.1 LTS
Bash version: 4.2.24(1)-release
各システムでどのバージョンのgrepを使用していますか?Linuxの単一バージョンはありません-どのフレーバー/バージョンを使用していますか?
—
マットボール
s / grep / bash />。>
—
Ignacio Vazquez-Abrams