我在外壳脚本 -在shell脚本删除某些字符
echo grep datadir /etc/my.cnf
运行此命令,这是输出I GOT-
datadir=/var/lib/mysql
我应该怎么做才能AS-
输出/var/lib/mysql
我在外壳脚本 -在shell脚本删除某些字符
echo grep datadir /etc/my.cnf
运行此命令,这是输出I GOT-
datadir=/var/lib/mysql
我应该怎么做才能AS-
输出/var/lib/mysql
如何:
[[email protected] ~]$ echo $str
datadir=/var/lib/mysql
[[email protected] ~]$ echo ${str#*=}
/var/lib/mysql
在ABS处详细了解这些操作。
使用cut
-d选项
grep datadir /etc/my.cnf | cut -d = -f 2
它管道sed 's/^datadir=//'
这意味着 “更换领导datadir=
什么也没有”。
或者更好,但只使用'sed -n's/^ datadir = // p'/etc/my.cnf'而不使用'grep'或'echo'。 – tripleee
管的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
输出与您发布的命令不匹配。无论是'echo'都是错误的,或者你省略了一个(无用的)反引号。 – tripleee