【问题标题】:Regex in bash: extract string with single or double quotesbash 中的正则表达式:用单引号或双引号提取字符串
【发布时间】:2023-02-23 19:08:04
【问题描述】:

我想从 wordpress wp-config.php 文件中提取数据库访问信息。

示例(双引号):

define( "DB_NAME", "mydatabase" );

但它也可能看起来像这样(单引号)

define( 'DB_NAME', 'mydatabase' );

混合版本也是可能的:

define( 'DB_NAME', "mydatabase" );

到目前为止,我在互联网上找到了这个:

DBNAME=`cat wp-config.php | grep DB_NAME | cut -d \' -f 4`

这在使用单引号时有效。我正在寻找的是一个可以处理所有情况的正则表达式。

谢谢

【问题讨论】:

  • 你不能运行php来运行配置并为你输出值吗?
  • 不在我的用例中。

标签: wordpress bash grep


【解决方案1】:

输入文件

$ cat wp-config.php
define( 'DB_NAME', "mydatabase" );

或者

$ cat wp-config.php
define( 'DB_NAME', 'mydatabase" );

php -r 'require_once("wp-config.php"); echo DB_NAME;'

GNU grep

$ grep -oP "^define.*?DB_NAME.*?["']Kw+" wp-config.php

输出

mydatabase

【讨论】:

  • 谢谢。几乎。当数据库名称包含点(例如 www.mydatabase.com)时,您的 GNU grep 示例将只返回“www”。
【解决方案2】:

awk 怎么样?

您的示例文件:

$ cat wp-config.php
define( 'DB_NAME', "mydatabase.com" );

命令:

grep DB_NAME wp-config.php | awk -F "['"]" '{print $4}'

输出:

mydatabase.com

【讨论】:

    猜你喜欢
    • 2018-01-25
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 2012-11-24
    • 1970-01-01
    • 2021-05-21
    • 2012-09-26
    • 2016-10-06
    相关资源
    最近更新 更多