xxARCRPT_ES_US.rtf ファイル名から文字列を抽出したい。

xxARCRPT_ES_US.rtf ファイル名から文字列を抽出したい。

xxARCRPT_ES_US.rtf割り当てるファイル名から文字列を抽出したいです。

lobcode=XXARCRPT ,LANG=es, TERITORY=US

注:.kshファイルに実装する必要がありました。

例えば、

file name: xxARCRPT_ES_US.rtf
----------> lobcode=XXARCRPT   (must be in upper case)
----------> LANG=es            (must be in lower case)
----------> TERITORY=US        (must be in upper case)

誰もが文字列を3つの変数に分割するのに役立ちますか?

ありがとう
、アラン

答え1

filename=xxARCRPT_ES_US.rtf

これにより、最初の下線の後のすべての項目が削除され、に保存され、lobcode大文字で表示されますtr

lobcode=${filename%%_*}
lobcode=$(printf '%s' "$lobcode" | tr '[a-z]' '[A-Z]')

これにより、最初のアンダースコアの後の内容として中間一時変数が設定されます。

rest=${filename#*_}

変数に言語プレフィックス(最初の下線の前のすべての項目)を割り当て、language小文字に変換します。

language=${rest%%_*}
language=$(printf '%s' "$language" | tr '[A-Z]' '[a-z]')

これにより、最初の下線の前の前のテキストが削除され、最初のピリオド以降のすべての内容が削除され、割り当てられます。それ変数に追加territoryし、大文字として使用します。

rest=${rest#*_}
territory=${rest%%.*}
territory=$(printf '%s' "$territory" | tr '[a-z]' '[A-Z]')

...その後、一時変数をクリーンアップします。

unset rest

関連情報