【发布时间】:2020-12-04 03:22:03
【问题描述】:
问候 Stack Overflow 社区。p>
我目前正在为一件相对简单的事情而苦苦挣扎。 为了自动查找和记录应用程序配置,我目前正在编写一个脚本,该脚本从某些应用程序的配置文件中读取配置数据。 由于这些配置文件的语法可能会有所不同,并且唯一的常量是例如数据库名称的模式,因此我想通过正则表达式提取这些数据库名称。
例如:
数据库名称始终具有语法 db_s{serverid}_{dbid}
其中 serverid 由 2-4 个数字组成,数据库 id 由 2-4 个数字组成,向上计数。 有效的数据库名称例如:
db_s0001_01
db_s1337_42
db_s123_123
db_s42_1337
数据库名称以不同的语法存储在配置文件中,具体取决于使用的应用程序。 以下是一些示例:
define( 'DB_NAME', 'db_s0001_01' );
define( 'DB_NAME', "db_s0001_01" );
'dbname' => 'db_s0001_01',
'dbname' => "db_s0001_01",
database_name: db_s0001_01
分解配置文件以获得正确的凭证变量的正确行不是问题。但是我将如何继续并从配置字符串中提取精确的数据库名称?
正则表达式应该类似于
(db_s[0-9]{2,4}_[0-9]{2,4})
但我不能完全了解使用哪个工具以及如何提取确切的数据库名称。 那么如何只得到数据库名称呢?
echo 'define( 'DB_NAME', "db_s0001_01" );' | grep/sed/awk (db_s[0-9]{2,4}_[0-9]{2,4})
【问题讨论】:
-
单引号不嵌套。尝试不带任何管道的
echo,它不会打印您期望的内容。