我在shell脚本中运行了这个命令-
echo grep datadir /etc/my.cnf
这是我得到的输出-
datadir=/var/lib/mysql
我应该怎么做才能得到输出 -
/var/lib/mysql
怎么样:
[cnicutar@fresh ~]$ echo $str
datadir=/var/lib/mysql
[cnicutar@fresh ~]$ echo ${str#*=}
/var/lib/mysql
在ABS阅读更多关于这些操作的信息。
将 grep 的输出通过管道输出:
$ echo 'datadir=/var/lib/mysql' | cut -d '=' -f 2
/var/lib/mysql
如果您的文件中有空格,您可能会遇到问题(请注意输出中的缩进):
$ echo 'datadir = /var/lib/mysql' | cut -d '=' -f 2
/var/lib/mysql
您可以使用 awk 来规避此问题:
$ echo 'datadir = /var/lib/mysql' | awk -F '[[:space:]]*=[[:space:]]*' '{print $2}'
/var/lib/mysql
cut
与 -d 选项一起使用
grep datadir /etc/my.cnf | cut -d = -f 2
管它通过sed 's/^datadir=//'
,这意味着“用任何东西代替前导datadir=
”。