Bash: Comment marquer une variable de chaîne?
Si j'ai une variable de type string qui est la valeur est "john is 17 years old"
comment puis-je marquer de ce à l'aide d'espaces comme le délimiteur? Puis-je utiliser awk
?
Vous devez vous connecter pour publier un commentaire.
Utiliser l'interpréteur de commande automatique de segmentation en unités de sociétés non cotées variables:
Si vous voulez changer le séparateur, vous pouvez définir le
$IFS
variable, ce qui signifie interne séparateur de champ. La valeur par défaut de$IFS
est" \t\n"
(espace, tabulation, saut de ligne).(À noter que dans ce second exemple, j'ai ajouté entre parenthèses autour de la deuxième ligne. Cela crée un sous-shell pour que la modification de
$IFS
ne persistent. En général, vous ne voulez pas changer de façon permanente$IFS
comme il peut faire des ravages sur les commandes du shell.)IFS="_";set -- $string; echo $2.
ou directement à un tableau comme cedtmilano
fait. Il n'est pas nécessaire d'utiliser une boucle for n'est-ce pas?Pour d'autres délimiteurs, à l'instar de ';'
vous pouvez essayer quelque chose comme ceci :
tr
, c'est la meilleure solution. Votre exemple de code pourrait être beaucoup plus simple :echo john is 17 years old | tr ' ' '\n'
avec POSIX étendue de la regex:
c'est comme python
re.split(r'\W+', str)
\W
correspond à un caractère non alphabétique,y compris l'espace, tabulation, saut de ligne, retour, [comme le
bash for
tokenizer]mais aussi, y compris des symboles comme des guillemets, des parenthèses, des signes, ...
... sauf le trait de soulignement signe
_
,donc
snake_case
est un mot, maiskebab-case
sont deux mots.attaque et de fuite de l'espace permettra de créer une ligne vide.