删除shell脚本中的某些字符

时间:2012-12-08 10:46:33

标签: linux shell

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

echo grep datadir /etc/my.cnf

这是我得到的输出 -

datadir=/var/lib/mysql

如何才能将输出设为 -

/var/lib/mysql

4 个答案:

答案 0 :(得分:2)

怎么样:

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

ABS了解有关这些操作的详情。

答案 1 :(得分: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

答案 2 :(得分:1)

cut与-d选项

一起使用
grep datadir /etc/my.cnf | cut -d = -f 2

答案 3 :(得分:0)

通过sed 's/^datadir=//'进行管道传输,这意味着“无需替换前导datadir=”。