Sedと正規表現、同じ行に同じパターンを持つ2つの異なるグループがありますか?

Sedと正規表現、同じ行に同じパターンを持つ2つの異なるグループがありますか?

次のようなデータがあります。

BLACK Harry<-George->Edna<-$$$Tom<-Tom->Phil<-Tue"

この場合に使用するデータは次のとおりです。

ハリー<-ジョージ->エドナ<-

トム<-トム->フィル<-

私のコマンドは現在次のとおりです

sed 's!.*\(\([A-Z][a-z]*[-><][-<>]\)\{3\}\).*!\1!'

.*私の理解は、(貪欲)を使用するときに最長の一致が必要であり、前後のすべてを置き換えるということです。

今私の結果は次のとおりです。

トム<-トム->フィル<-

パターンの最初の発生を別のグループに追加するにはどうすればよいですか?

ベストアンサー1

$ echo 'BLACK Harry<-George->Edna<-$$$Tom<-Tom->Phil<-Tue' |
> sed -e 's/.*\b\(\w\+<-\w\+->\w\+<-\).*\b\(\w\+<-\w\+->\w\+<-\).*/\1\n\2/'
Harry<-George->Edna<-
Tom<-Tom->Phil<-
  • \b=単語の境界
  • \w=単語文字

最良の紹介はsedBruce Barnettの本にあります。Unix 魔法の本

おすすめ記事