2012-12-08 125 views
0

我在外壳脚本 -在shell脚本删除某些字符

echo grep datadir /etc/my.cnf 

运行此命令,这是输出I GOT-

datadir=/var/lib/mysql 

我应该怎么做才能AS-

输出
/var/lib/mysql 
+0

输出与您发布的命令不匹配。无论是'echo'都是错误的,或者你省略了一个(无用的)反引号。 – tripleee

回答

1

使用cut -d选项

grep datadir /etc/my.cnf | cut -d = -f 2 
0

它管道sed 's/^datadir=//'这意味着 “更换领导datadir=什么也没有”。

+3

或者更好,但只使用'sed -n's/^ datadir = // p'/etc/my.cnf'而不使用'grep'或'echo'。 – tripleee

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