我想从文件名 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

相关内容