/ / Supprimer certains caractères du script shell - linux, shell

Supprimer certains caractères du script shell - linux, shell

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 № 1

Que 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".