Disons que " fichier texte "contient les éléments suivants :
lorem$ipsum-is9simply the.dummy text%of-printing
et que vous voulez imprimer chaque mot sur une ligne séparée. Cependant Les mots doivent être définis non seulement par des espaces, mais aussi par tous les caractères non alphanumériques. Ainsi, les résultats devraient ressembler à :
lorem
ipsum
is9simply
the
dummy
text
of
printing
Comment puis-je réaliser cela en utilisant le shell Bash ?
Quelques notes :
-
Il ne s'agit pas d'une question de devoir.
-
Le cas le plus simple, où les mots ne doivent être déterminés que par des espaces, est facile. Il suffit d'écrire :
for i in `cat textfile`; do echo $i; done;
fera l'affaire et reviendra :
lorem$ipsum-is9simply the.dummy text%of-printing
Pour séparer les mots par des caractères non alphanumériques, j'ai vu des solutions qui utilisent la variable d'environnement IFS (liens ci-dessous), mais je voudrais éviter d'utiliser IFS pour deux raisons : 1) cela nécessiterait (je pense) de définir l'IFS sur une longue liste de caractères non-alphanumériques. 2) Je trouve cela un peu laid.
-
Voici les deux questions-réponses connexes que j'ai trouvées
Comment diviser une chaîne de caractères sur un délimiteur en Bash ?
Comment diviser une ligne en mots séparés par un ou plusieurs espaces en bash ?