shell脚本分割字符串----获取mysql8初始密码

准备知识:

准备知识参考文章:

https://blog.csdn.net/ever_peng/article/details/87697720

cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的。

其语法格式为:
cut  [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file]

使用说明
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

主要参数
-b :
以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
范围之内,该字符将被写出;否则,该字符将被排除。

博主在写脚本初始化mysql8时踩了一个坑,跟大家分享一下:

msyql8的初始化密码在data目录下的error.log文件中,

博主采用grep  A temporary password定位到这个一行,然后用“:”分割(sh脚本只能用单个字符作为分割符),然后在根据角标拿到第三个“:”的值,还要去除前面的空格。

password=`sudo grep "A temporary password" /u01/polarscale/data/error.log|cut -d : -f 4 |cut -d " " -f 2 | awk '{ print $1 }'` 

费了一番功夫,拿到了。但是今天小伙伴突然说脚本不好使,密码不正确。我一看error.log文件:

shell脚本分割字符串----获取mysql8初始密码_第1张图片

密码里面有“:”,跟我的分割符冲突了,于是赶紧改取密码方案:

password=`sudo grep "A temporary password" /u01/polarscale/data/error.log| awk '{ print $13 }'`

这下可以了,但是感觉怪怪的,awk拿的最后一个元素,我却直接用索引了,太麻烦了,又改成了

password=`sudo grep "A temporary password" /u01/polarscale/data/error.log| awk '{ print $NF}'`

这里NF是拿最后一个元素

大功告成

 

你可能感兴趣的:(shell脚本分割字符串,java8初始化密码,sh切分字符串,cut,awk)