bash 文字列の抽出

bash 文字列の抽出

次の文字列の最後の部分から2番目のフィールドを抽出したいと思います。

foo_1.103.debug_xx.ver21-inc-1          --> string extracted "debug_xx"
foo_1.103.1.0.release_32_xx.ver21-inc-1 --> string extracted "release_32_xx"
foo_1.103.1.0.release_xx.ver21-inc-1    --> string extracted "release_xx"

どんな助けでも大変感謝します。

ベストアンサー1

純粋さbash:

IFS='.' read -a p <<< 'foo_1.103.1.0.release_32_xx.ver21-inc-1'
echo "${p[${#p[@]}-2]}"

以下を使用すると、これを簡単に実行できますawk

awk -F. '{print$(NF-1)}' <<< 'foo_1.103.1.0.release_32_xx.ver21-inc-1'

解析したい文字列がファイル名の場合でも、次のものを使用できますawk

awk -F. 'BEGIN{for(i=1;i<ARGC;i++){$0=ARGV[i];print$(NF-1)}}' foo*

おすすめ記事