用awk返回单引号之间的字符串

Jim*_*mmy 3 shell awk

我正在编写一个脚本来大规模重置wordpress用户名和密码.密码是使用旧密码存储的,现在随着MySQL和PHP的更新,旧密码不再有效,因此需要重置.

我有一个看起来像这样的文件:

define('DB_USER', 'abc_12345');
define('DB_PASSWORD', 'abc12345');
define('DB_USER', 'def_34589');
define('DB_PASSWORD', 'def34589');
Run Code Online (Sandbox Code Playgroud)

我只需要在单引号内返回值:

DB_USER abc_12345
DB_PASSWORD abc12345

DB_USER def_34589
DB_PASSWORD def34589
Run Code Online (Sandbox Code Playgroud)

现在,我已经查看了类似的问题,但它们都与我正在使用的有点不同.

我尝试过以下方法:

cat file.txt | awk '{print $1,$2}' 
Run Code Online (Sandbox Code Playgroud)

返回

define('DB_USER', 'abc_12345');
define('DB_PASSWORD', 'abc12345');
define('DB_USER', 'def_34589');
define('DB_PASSWORD', 'def34589');
Run Code Online (Sandbox Code Playgroud)

我试过了

cat file.txt | awk '{print $1}'
Run Code Online (Sandbox Code Playgroud)

返回

define('DB_USER',
define('DB_PASSWORD',
Run Code Online (Sandbox Code Playgroud)

我试过了

cat file.txt | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)

返回

'abc_12345');
'abc12345');
Run Code Online (Sandbox Code Playgroud)

我也尝试过用grep混合awk

cat file.txt | awk '{print $2}' | grep -P " '*.' "
Run Code Online (Sandbox Code Playgroud)

这不会返回任何东西.

小智 6

awk -F\' '{print $2,$4}' file.txt
Run Code Online (Sandbox Code Playgroud)