7
votes

Bash Scripting, comment éliminer la sous-chaîne de fin, le cas insensible?

Je modifie un script qui se lit dans un email utilisateur. C'est très simple, trop simple. XXX

Ceci fonctionne, mais uniquement pour les minuscules @ Exemple.com. Comment puis-je modifier ceci pour supprimer le trailing @ Exemple.com, Case Insensible?


0 commentaires

6 Réponses :


2
votes

Que diriez-vous d'utiliser SED?

email="$(sed 's|@example\.com$||i' <<<"$email")"


0 commentaires

7
votes

Si vous avez Bash 4:

email=${email%%@*}


4 commentaires

Je ne veux pas convertir le courrier électronique en minuscule. quel que soit le cas, je veux préserver


Il convient de noter que ces deux transformeront également toutes les parties de l'adresse en minuscules ...


Peut-être que vous voulez juste cela alors: email = $ {email %% @ *}


oui ça marche. Je choisirais cette réponse, mais vous savez que le débordement de la pile ne vous permettrait même pas de choisir votre propre réponse si vous êtes nouveau.



3
votes

pour bash 3.2 et plus:

shopt -s nocasematch
email='JoHnDoE@eXaMpLe.CoM'
pattern='^(.*)@example.com$'
[[ $email =~ $pattern ]]
email=${BASH_REMATCH[1]}    # result: JoHnDoE


0 commentaires

0
votes
echo -n "Please enter your example.com email address: "
read _email
_email=$(echo $_email | awk 'BEGIN{ FS="@" }  {print $1}')
echo $_email
and for transfer email to lower case you can use declare, such asdeclare -l email=$email

0 commentaires

2
votes

Voici encore un autre (bien que un peu long), prenez-y:

email='JoHnDoE@eXaMpLe.CoM'
email=${email%%@[Ee][Xx][Aa][Mm][Pp][Ll][Ee].[Cc][Oo][Mm]}
echo "email is $email"


0 commentaires

0
votes

Utiliser une assemblée insensible à la casse à une expression régulière: xxx

Vous pouvez couper une chaîne en fonction de sa longueur (qui n'a de sens que si vous savez que l'utilisateur saisit correctement le domaine. ): xxx


0 commentaires