2017-04-08 8 views
0

私はsedを試し始めましたが、実際にキャプチャの仕事がどのように一致するかはわかりません:2つの単語をキャプチャするためのこのようなコードがある場合sed 's/\([a-z]*\).*\([a-z]*\).*/\1 \2/'なぜ2番目の単語はキャプチャされませんか?sedとの一致をキャプチャ

Edit1:私はこの文字列を持っているとしましょう。「茶色のキツネは怠惰な犬の上を飛びます。 (ただQ /ペアを作るために、Sundeepを引用。)私は「ブラウン」と一致するSEDたいが、それは最初の単語だけ

+0

たちに上記の 'sed'コマンドが – Inian

+2

' * '貪欲ですがうまくいきませんでした文字列(または)入力ファイルを与える...それは可能な限り一致するようにしようとします...と、式全体が持っていながら、 '' * 'は0以上のマッチングを意味するので、 '。*'や '[az] *'が空であることは全く同じです。 – Sundeep

+1

のスペースを '。*'に置き換えてください。 'sed 's/\([az] * \)* \([az] * \)。*/\ 1 \ 2 /'' – Sundeep

答えて

1

に一致する

は空白文字で.*にドットを置き換えます...

sed 's/\([a-z]*\) *\([a-z]*\).*/\1 \2/' 
+0

バックトラッキングの安全性を高めるには、 '*'の代わりに '{1、}'を使用してください。私はそれが拡張でないことを願っています。 – Yunnosch

関連する問題