0

我在shell脚本中运行了这个命令-

echo grep datadir /etc/my.cnf

这是我得到的输出-

datadir=/var/lib/mysql

我应该怎么做才能得到输出 -

/var/lib/mysql
4

4 回答 4

2

怎么样:

[cnicutar@fresh ~]$ echo $str
datadir=/var/lib/mysql
[cnicutar@fresh ~]$ echo ${str#*=}
/var/lib/mysql

在ABS阅读更多关于这些操作的信息。

于 2012-12-08T10:49:04.667 回答
2

将 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
于 2012-12-08T10:54:49.780 回答
1

cut与 -d 选项一起使用

grep datadir /etc/my.cnf | cut -d = -f 2
于 2012-12-08T10:50:31.503 回答
0

管它通过sed 's/^datadir=//',这意味着“用任何东西代替前导datadir=”。

于 2012-12-08T10:50:39.193 回答