部分文字列を区切り文字として文字列を分割し、次の部分を取得します。

部分文字列を区切り文字として文字列を分割し、次の部分を取得します。

これは私の文字列です。LIBRARY_TRGT_CANV,CANV_MATCH<anything>

最後の区切り文字以降のすべてのテキストを取得したいと思います。つまり、次のようになります_TRGT_

希望の出力:

CANV,CANV_MATCH<anything>

- - - または - - -

2 番目の下線の後のすべてのテキストを取得します。つまり、CANVL,CANVL_BATCH<anything>

ベストアンサー1

使用できないかsed不要ですawk。純粋なPOSIXシェルでこれを行うことができます。

文字列を変数と仮定すると、$string次のようにして最後の文字列以降のすべてを取得できます_TRGT_

cutstring="${string##*_TRGET_}"

##文字列の先頭から可能な限り長い一致を削除します)

2 番目の下線以降のすべての内容を取得するには、次のようにします。

cutstring="${string#*_*_}"

#文字列の先頭からできるだけ短い一致を削除します)

sedもちろん、終了後にコンテンツを入手することもできます_TRGT_

sed 's/.*_TRGT_//' <<< "$string"

または、2 番目の下線以降の内容を取得します。

sed 's/^[^_]*_[^_]*_//' <<< "$string"

おすすめ記事