Comment découper une chaîne de caractères de la coquille
J'ai une variable comme
string="ABC400p2q4".
comment puis-je séparer ABC400
et p2q4
.
J'ai besoin de le séparer en deux variables de telle manière qu'en conséquence je obtenir
echo $var1
ABC400
echo $var2
p2q4
En place de l'ABC, il peut être n'importe quel caractères alphabétiques; au lieu de 400 il ne peut y avoir d'autres chiffres; mais p
et q
sont fixes et à la place de 2 et 4 ainsi, il peut être n'importe quel chiffre.
Ce shell? Il y a au moins une douzaine.
Quelles sont les autres valeurs; quels sont les critères pour le partage de l'? Est-ce que les 6 premiers caractères et les 4 derniers caractères (mais qu'advient-il si la longueur n'est pas 10)? Est-il ABC plus 3 chiffres vs fuite? Est-il 3 majuscules lettres, 3 chiffres, et le second matériau? Est-ce split avant le premier "p"? Pour votre tâche:
trop peu d'informations. est-il un motif/l'état de votre chaîne?
En place de l'ABC, il peut être tout albhabet, à la place de 400 il ne peut y avoir d'autres chiffres bt p et q sont fixes et à la place de 2 et 3 ainsi, il peut être n'importe quel chiffre.
Quelles sont les autres valeurs; quels sont les critères pour le partage de l'? Est-ce que les 6 premiers caractères et les 4 derniers caractères (mais qu'advient-il si la longueur n'est pas 10)? Est-il ABC plus 3 chiffres vs fuite? Est-il 3 majuscules lettres, 3 chiffres, et le second matériau? Est-ce split avant le premier "p"? Pour votre tâche:
var1=ABC400; var2=p2q4
fait le travail, pas muss, pas de chichi.trop peu d'informations. est-il un motif/l'état de votre chaîne?
En place de l'ABC, il peut être tout albhabet, à la place de 400 il ne peut y avoir d'autres chiffres bt p et q sont fixes et à la place de 2 et 3 ainsi, il peut être n'importe quel chiffre.
OriginalL'auteur P_Jain | 2013-03-14
Vous devez vous connecter pour publier un commentaire.
Avez pas besoin de couper basé sur une regexp motif qu'ils sont de longueur fixe de la sous-chaînes. Dans le plus pur
bash
vous feriez:OriginalL'auteur Chris Seymour
À l'aide de bash et spécial
BASH_REMATCH
array (non longueur fixe) :OriginalL'auteur Gilles Quenot
Essayer de faire ce
à l'aide de bash & processus de substitution (non longueur fixe) :
ou ce à l'aide d'un chaîne ici
ou avec le court
sed substitution
version de KentNote
&
dans lesed
de commande signifie l'correspondant à la partie gauche de la substitutions///
Sortie
sed -r 's/([0-9])p/\1 p/'
Comme en Perl, il n'y a plus qu'une façon de le faire =) Ajouté à votre solution de trop
OriginalL'auteur Gilles Quenot
La réponse fournie par sudo_O est parfait si vos chaînes de rester seule longueur. Mais, si ce n'est pas le cas, bash ne vous fournir chaîne regex correspondance des objets internes.
Remplacer les regex avec tout ce dont vous avez réellement besoin.
OriginalL'auteur Spencer Rathbun