Grep Info然后只在单引号之间显示文字?

时间:2013-12-07 07:54:46

标签: regex linux bash ssh

所以,我正在研究一个基本的Wordpress bash脚本,我需要从wp-config.php文件中获取数据库信息。

我已设法grep数据库信息,但我遇到了正则表达式的问题,只能获取数据库名称或用户。

root@server [/home/user/public_html/]# grep -Ei "DB" wp-config.php | awk '{print $2}' | sed s/\'//g
user_mywp);
user_mywp);
mydbpassword);

这就是我尝试过但我确信那太可怕了。

以下是原始输出的外观,只有 grep DB wp-config.php

define('DB_NAME', 'user_mywp');
define('DB_USER', 'user_mywp');
define('DB_PASSWORD', 'mydbpassword');

1 个答案:

答案 0 :(得分:1)

不需要grep,只需使用awk one-liner:

awk -F "[,() ']+" '$2 ~ /^DB_/{print $3}' wp-config.php
user_mywp
user_mywp
mydbpassword

更新:一次获取一个值:

> awk -F "[,() ']+" '$2 == "DB_NAME" {print $3}' wp-config.php 
user_mywp
> awk -F "[,() ']+" '$2 == "DB_USER" {print $3}' wp-config.php 
user_mywp
> awk -F "[,() ']+" '$2 == "DB_PASSWORD" {print $3}' wp-config.php 
mydbpassword

说明:此awk使用字段分隔符[,() ']+[ and ]中列出的一个或多个字符只会在$2, $3等中获取感兴趣的数据。