次のようなデータがあります。
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
=単語文字
最良の紹介はsed
Bruce Barnettの本にあります。Unix 魔法の本。