8 votes

bash - manipulation des chaînes de caractères obtenir la chaîne avant ou après la sous-chaîne

Bonne journée à tous

C'est une question de débutant, mais je n'arrive pas à trouver la réponse à cette question. D'autres fonctions comme 'cut', 'awk' ou 'sed' sont toujours mentionnées, mais jamais la fonction d'expression de chaîne de caractères (je crois qu'elle s'appelle).

string="hi this is a string.and.it has no purpose other than being here"

searchstring="and"

temp=${string#*$searchstring} # this means everything after "and" will be inserted into temp

echo $temp = "hi this is a string."

mais disons que je veux tout ce qui se trouve avant "et" et en utilisant la même méthode que celle utilisée pour obtenir le résultat de la variable temp, je veux donc

echo $temp = ".it has no purpose other than being here"

J'ai essayé

temp=${string%*$searchstring} (as I understand, # is from front and % is back)

mais cela ne retourne que le contenu de la chaîne inchangé

De même, les pages de manuel, comment s'appelle cette fonction d'expression de chaîne, où puis-je trouver des informations plus approfondies ?

17voto

choroba Points 17339

Vous devez placer l'astérisque à l'autre bout de la chaîne. L'astérisque reste pour "quoi que ce soit", donc

${string%$searchstring*}

signifie "supprimer de la chaîne tous les éléments à partir de la chaîne de recherche".

Ceci est documenté dans man bash sous "Expansion des paramètres".

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X