単一文字列の2つのパターン間で複数の結果を検索する

単一文字列の2つのパターン間で複数の結果を検索する

一部のデータの解析に問題があります。

私のファイルは次のとおりです。

bliblablo-/interestingdata1UUUUUUUUUUUUUUU/-blublu-/interestingdata2UUUUUUUUUUUUUUU/-blybly-/etcetcetc

私は以下を得るべきです:

interestingdata1
interestingdata2

次のような「興味深いデータ」が1つしかない場合:

bliblablo-/interestingdata1UUUUUUUUUUUUUUU/-bl

次のコマンドが私にとって効果的でした。

cat file | sed -E 's/.*[-][/](.*)[U]{15}.*/\1/g'

ただし、同じ文字列内の複数の一致に対して機能しなくなりました(最後の一致のみを印刷します)。私の区切り文字は常に「-/」で始まり、「UUUUUUUUUUUUUU」で終わります。間に何があるのか​​わかりませんが、すべてを抽出する必要があります。

この問題を解決する方法を知っている人はいますか?

ベストアンサー1

プレビューと非欲張りな一致でPCREモードでGNU grepを使用する:

$ grep -Po '(?<=-/).*?(?=U{15})' file
interestingdata1
interestingdata2

おすすめ記事