J'ai besoin d'extraire la chaîne après le où j'obtiendrais Je tente cela à bash et je crois avoir une expression régulière qui fonctionnera dans mon script bash j'ai où le résultat de Merci! P> : code> dans un exemple ci-dessous: p>
package: projet.abc.def code> p>
project.abc.def code> en conséquence. p>
: ([^:] *) $ code>. p>.
package: projet.abc.def code> en tant que variable appelé apk code>. Maintenant, comment affecter la même variable la sous-chaîne trouvée avec l'expression régulière? P>
package: projet.abc.def code> serait dans la variable apk code>. Et package: projet.abc.def code> est initialement dans la variable apk code>? P>
3 Réponses :
Il n'y a pas besoin d'une regex ici, juste une simple substitution de préfixe: la syntaxe ## est l'une des expansions des paramètres de Bash. Au lieu de #,% peut être utilisé pour couper la fin. Voir Cette section de la page Bash Man Les détails. P> Quelques alternatives: P> $ apk=$(echo $apk | awk -F'package:' '{print $2}')
$ apk=$(echo $apk | sed 's/^package://')
$ apk=$(echo $apk | cut -d':' -f2)
Cela fonctionne parfaitement, mais ce serait génial si vous pouvez ajouter une explication sur ## code> chose.
Les groupes de capture d'expressions régulières peuvent être trouvés dans le tableau Bash_Rematch CODE>. [[ $str =~ :([^:]*)$ ]]
# 0 is the substring that matches the entire regex
# n > 1: the nth parenthesized group
apk=${BASH_REMATCH[1]}
$ string="package:project.abc.def" $ apk=$(echo $string | sed 's/.*\://') ".*:" matches everything before and including ':' and then its removed from the string.
Cela sent la désinstallation automatique ou la désinvente des paquets Android si je ne me trompe pas