linux中的子串使用cut

时间:2018-02-21 08:26:27

标签: bash grep pipe

我想获取文件的子字符串以获取centos中mysql的默认密码。 这是我用来获取密码的命令:

sudo grep 'temporary password' /var/log/mysqld.log

结果是:

2018-02-21T07:03:11.681201Z 1 [Note] A temporary password is generated for root@localhost: >KkHAt=#z6OV

现在,我使用此命令仅获取密码并删除不必要的内容,因此我可以在脚本中使用它:

sudo grep 'temporary password' /var/log/mysqld.log | cut -d ':' -f 4 | cut -d ' ' -f 2

但使用2次切割似乎非常难看。是否有其他可以使用的命令或工具,或者更优雅的方法来执行此操作?

2 个答案:

答案 0 :(得分:3)

使用awk:

$ awk '/temporary password/{print $NF}' file
>KkHAt=#z6OV

答案 1 :(得分:0)

请记住awk根据字段分隔符(默认为空格)分割字段中的行,NF表示字段数,可以打印最后一个字段:

$ grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}'