首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自.my.cnf的Grep密码

来自.my.cnf的Grep密码
EN

Stack Overflow用户
提问于 2017-07-29 13:23:59
回答 3查看 223关注 0票数 1

我试图从.my.cnf获得(写访问)密码,但我还没有得到它。

.my.cnf看起来如下所示:

代码语言:javascript
复制
# longer
# comment text

[clientreadonly]
password=pass1 # comment
port=3306
user=test_ro
socket=/var/lib/mysql/mysql.sock

[client]
password=pass2 # comment
port=3306
user=test
socket=/var/lib/mysql/mysql.sock

我想要pass2。当然,代码不应该太冗长。我最后

代码语言:javascript
复制
grep 'password=' ~/.my.cnf | sed -e 's/password=//

但是,这实际上把#comment留在了pass2之后,我不想替换整个评论(因为仅仅替换它在原版中是很长的,而且很愚蠢)。因此,我需要一个正则表达式来获得pass2

主要目标是将密码用于grep,这样我就可以在shell命令行中轻松地使用它。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-29 14:24:49

代码语言:javascript
复制
$ awk -F'[= ]' '/^password=/ && p !~ /clientreadonly/{print $2} {p=$0}' ~/.my.cnf
pass2
  • -F'[= ]'使用空格或=作为字段分隔符。
  • /^password=/ && p !~ /clientreadonly/ if行以password=开头,而前面的行不包含clientreadonly
    • print $2打印第二个字段

  • p=$0将前一行保存在p变量中
票数 1
EN

Stack Overflow用户

发布于 2017-07-29 13:41:22

你可以像下面这样修改一下-

代码语言:javascript
复制
grep 'password=' ~/.my.cnf | sed -e 's/password=//' -e 's/ # comment//'

或者其他方式-

代码语言:javascript
复制
grep 'password=' ~/.my.cnf | cut -d' ' -f1 | cut -d'=' -f2
票数 1
EN

Stack Overflow用户

发布于 2017-07-29 13:43:24

使用perl:

代码语言:javascript
复制
perl -00 -ane '/\[client\].password=(\S+)/s && print $1' < ~/.my.cnf

输出:

代码语言:javascript
复制
pass2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45389793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档