J'ai exécuté cette commande dans le script shell
echo grep datadir /etc/my.cnf
c'est la sortie que j'ai eu
datadir=/var/lib/mysql
Que dois-je faire pour obtenir le résultat
/var/lib/mysql
Réponses:
2 pour la réponse № 1Que diriez-vous:
[cnicutar@fresh ~]$ echo $str
datadir=/var/lib/mysql
[cnicutar@fresh ~]$ echo ${str#*=}
/var/lib/mysql
En savoir plus sur ces opérations à la abdos.
2 pour la réponse № 2
Pipe la sortie du grep dans une coupe:
$ echo "datadir=/var/lib/mysql" | cut -d "=" -f 2
/var/lib/mysql
Vous pourriez courir avec des problèmes s'il y a des espaces dans votre fichier (notez le retrait sur la sortie):
$ echo "datadir = /var/lib/mysql" | cut -d "=" -f 2
/var/lib/mysql
Vous pouvez utiliser awk pour contourner cela:
$ echo "datadir = /var/lib/mysql" | awk -F "[[:space:]]*=[[:space:]]*" "{print $2}"
/var/lib/mysql
1 pour la réponse № 3
utilisation cut
avec l'option -d
grep datadir /etc/my.cnf | cut -d = -f 2
0 pour la réponse № 4
Pipe à travers sed "s/^datadir=//"
ce qui signifie "remplacer le leader datadir=
avec rien".