2011-05-18 15 views
5

は、これらの文字列を取得します:^(06700|067|00)([0-9]*)Javaの正規表現とsedは同じではありません...?

00543515703528 
00582124628575 
0034911320020 
0034911320020 
005217721320739 
0902345623 
067913187056 
00543515703528 

は、JavaでのこのEXPを適用します。

私の意図は、先頭の「06700,067、00」を文字列の先頭から削除することです。

それはすべてJavaでクールで、グループ2はいつも私がするつもり番号を持っていますが、sedで、それは同じイマイチ:

$ cat strings|sed -e 's/^\(06700|067|00\)\([0-9]*\)/\2/g' 
00543515703528 
00582124628575 
0034911320020 
0034911320020 
005217721320739 
0902345623 
067913187056 
00543515703528 

私が行方不明です一体何?

乾杯、

f。

答えて

5

拡張正規表現を使用して、あなたも()\を省略する必要があります。これは私の作品:

sed -r 's/^(06700|067|00)([0-9]*)/\2/g' strings 

ノートもcat

に別のコールのための必要はありませんことを
3

私はあなたの問題はこれですと信じて:BREへ

sedのデフォルト:セッドのデフォルト 動作は基本 正規表現(BRE)をサポートすることです。 |すべて このページ で説明する機能は 使用に-r(Linux)または-E(BSD)フラグを設定し、このフラグがない正規表現

Source

を拡張、使用するには文字は文字通りに解釈されます。この例を試してみてください。

echo "06700|067|0055555" | sed -e 's/^\(06700|067|00\)\([0-9]*\)/\2/g' 
関連する問題