首页 > 解决方案 > 如何从shell脚本中的文件名中提取字符串?

问题描述

我需要从以下文件名格式中获取包含字母字符和 _ 的文本: oracle_NAME_OF_DB_USER.log ,因此 PARAM=NAME_OF_DB_USER。找不到在 for 循环中使用的最佳正则表达式:

LIST=oracle_*.log

for file in $LIST; do
.
.
.
USER=${extracted_file_name}

标签: regexbashshellunix

解决方案


这是一个纯粹的 BASH 答案:

for file in oracle_ABC_USER_1.log oracle_ABC_USER_2.log oracle_ABC_USER_ADMIN_1.log oracle_ABC_USER_ADMIN_2.log oracle_NAME_OF_DB_USER.log; do
    [[ $file =~ oracle_(.*)[.]log ]]
    echo ${BASH_REMATCH[1]}
done

这是上面命令的输出:

ABC_USER_1
ABC_USER_2
ABC_USER_ADMIN_1
ABC_USER_ADMIN_2
NAME_OF_DB_USER

推荐阅读