Quelle est la commande Bash que je peux utiliser pour convertir une chaîne de caractères en majuscules en minuscules et vice-versa ?
Nous vous remercions.
Quelle est la commande Bash que je peux utiliser pour convertir une chaîne de caractères en majuscules en minuscules et vice-versa ?
Nous vous remercions.
Si la chaîne est déjà stockée dans une variable, vous pouvez utiliser bash
L'expansion des paramètres de l'entreprise, en particulier ${parameter,,pattern}
(disponible depuis bash 4.0), où parameter
est le nom de votre variable et pattern
est omis :
$ string="Hello, World!"
$ echo $string
Hello, World!
$ echo ${string,,}
hello, world!
Notez que cela ne modifie pas la valeur de la variable, mais seulement la sortie. Pour modifier la variable, vous devez lui attribuer la nouvelle valeur :
$ echo $string
Hello, World!
$ string=${string,,}
$ echo $string
hello, world!
La conversion des majuscules fonctionne avec ${parameter^^pattern}
:
$ echo ${string^^}
HELLO, WORLD!
Cela fonctionne également avec les chaînes Unicode (au moins avec les versions actuelles de bash, il faut probablement au moins bash 4.3) :
$ string=''
$ echo ${string,,}
$ echo ${string^^}
Si vous utilisez zsh
vous pouvez utiliser Drapeaux d'expansion des paramètres ( ${(FLAGS)NAME}
(disponible depuis zsh 2.5) pour obtenir les mêmes résultats. Les bash
ne fonctionne pas dans les zsh
1) . L'indicateur pour les minuscules est L
; pour les majuscules, c'est U
:
$ string="Hello, World!"
$ echo ${(L)string}
hello, world!
$ echo ${(U)string}
HELLO, WORLD!
$ echo $string
Hello, World!"
Cela fonctionne également avec les chaînes Unicode (au moins depuis zsh 5.0 ; je n'ai pas essayé avec les versions antérieures) :
$ string=''
$ echo ${(L)string}
$ echo ${(U)string}
1) Bien que, vu que zsh l'avait depuis bien plus longtemps, il devrait probablement l'être : "le zsh
ne fonctionne pas dans les bash
.
Il existe très peu de méthodes qui fonctionnent correctement avec Unicode :
GNU sed 4.2.2 travaux :
$ echo "Id gsi k" | sed 's/.*/\U&/'
ID GSI K
bash 4.2.45 déclare que no travail :
$ typeset -u ucase; ucase="Id gsi k"; echo $ucase
ID GSI K
L'expansion des paramètres de bash 4.2.45 fait no travail :
$ str="Id gsi k"; echo ${str^^}
ID GSI K
bash 4.3.42 declare
et l'expansion des paramètres travail :
$ declare -u ucase
$ ucase="Id gsi k"
$ echo $ucase
ID GSI K
$ echo ${ucase,,}
id gsi k
GNU tr 8.20 fait no travail :
$ echo "Id gsi k" | tr '[:lower:]' '[:upper:]'
ID GSI K
mawk (awk par défaut dans Ubuntu 13.10) fait no travail :
$ echo "Id gsi k" | mawk '{print toupper($0)}'
ID GSI K
s'étonner travaux :
$ echo "Id gsi k" | gawk '{print toupper($0)}'
ID GSI K
Perl pure uc() fait no travail :
$ echo "Id gsi k" | perl -ne 'print uc($_);'
ID GSI K
Python 2 sans aucune indication d'Unicode le fait no travail :
$ echo "Id gsi k" | python -c 'import sys; print sys.stdin.read().upper(),'
ID GSI K
Python 2 lorsqu'on lui demande de gérer l'Unicode travaux :
$ echo "Id gsi k" | python -c 'import sys; print sys.stdin.read().decode("utf-8").upper(),'
ID GSI K
Python 3 travaux :
$ echo "Id gsi k" | python3 -c 'import sys; print(sys.stdin.read().upper(), end="")'
ID GSI K
J'utiliserais le système interne bash composer o déclarer pour définir une variable en minuscules.
$ typeset -l lcase
$ lcase="LoWeR cAsE"
$ echo $lcase
lower case
Les caractères sont abaissés lorsque la valeur est définie, et non lorsque vous saisissez la variable. Il est donc préférable de saisir la variable au début du script. Pour les majuscules, vous pouvez typographie -u .
$ typeset -u ucase
$ ucase="Upper cAsE"
$ echo $ucase
UPPER CASE
Ce n'est pas spécifique à bash Shell, cela fonctionne aussi sur ksh, peut-être que c'est dans la définition de POSIX Shell.
EDIT : Plusieurs personnes m'ont gentiment fait remarquer que composer est désormais considérée comme obsolète sur bash et remplacée par déclarer . Les deux commandes sont équivalentes.
$ help typeset
typeset: typeset [-aAfFgilrtux] [-p] name[=value] ...
Set variable values and attributes.
Obsolete. See `help declare'.
$ help declare
declare: declare [-aAfFgilrtux] [-p] [name[=value] ...]
Set variable values and attributes.
Pour ma part, j'utilise toujours la syntaxe typée car je travaille dans un environnement hétérogène, ce qui me permet de ne pas réécrire mes scripts.
Vous pouvez le faire à l'aide de la fonction tr
commandement.
Dans le terminal ( Ctrl + Alt + T )
Cette commande :
echo 'String here' | tr "[:lower:]" "[:upper:]"
convertira les minuscules en majuscules.
echo 'STRING HERE' | tr "[:upper:]" "[:lower:]"
convertira les majuscules en minuscules.
Ejemplo:
Le mérite en revient à cybercité
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.