
これは私の文字列です。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"
答え2
echo "LIBRARY_TRGT_CANV,CANV_MATCH<anything>"|awk -F "_TRGT_" '{print $NF}'
出力
CANV,CANV_MATCH<anything>