我想从文件名中提取字符串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