Howto diviser une chaîne sur un multi-caractère délimiteur dans le bash?

Pourquoi ne pas travailler les suivantes bash code?

for i in $( echo "emmbbmmaaddsb" | split -t "mm"  )
do
    echo "$i"
done

résultat attendu:

e
bb
aaddsb
  • ...hein? Ce n'est pas ce split le fait. Comme dans complètement sans rapport avec sa fonction réelle.
  • Voulez-vous savoir comment découper une chaîne de caractères arbitraire arbitraire de caractères multi-séparateur en bash? Pourquoi pas de modifier une question à poser que, au contraire, si c'est ce que vous voulez vraiment le savoir?
  • Donc, ce n'est fractionner faire à votre avis?
  • split de diviser un fichier en un tas de petits fichiers. Pas de noms écrits sur la sortie standard, comme votre script attend, mais de vrais fichiers. Et -t donne un caractère unique qu'il utilise pour déterminer si les dossiers de début et de fin, et donc de faire des fentes sur enregistrements.
  • Ne fonctionne pas avec de simples caractères.
  • Bien sûr que non, PARCE que VOUS attendez des NOMS ÉCRITS sur la sortie standard STDOUT. Je vous ai déjà dit qu'il ne veut pas écrire les noms sur la sortie standard stdout.
  • Dans la page de manuel de split lecture à partir d'un tuyau est mentionné
  • Si rien n'est écrit sur la sortie standard, rien n'est capturé par une substitution de commande.
  • Oui, il peut lire à partir d'un tuyau. Il ne peut toujours pas écrire sur la sortie standard, et donc de ne pas générer du contenu que de la substitution de commande va lire.
  • OK, comment puis-je rediriger la sortie vers std sortie?
  • La rédaction de contenu dans des fichiers séparés pas plus grand qu'une taille maximale de chaque est le but que split existe. Avez-vous pensé que peut-être ce que vous voulez peut être un outil autre que split, puisque ce n'est pas ce que vous essayez de faire?
  • Laissez-nous continuer cette discussion dans le chat.

InformationsquelleAutor v217 | 2016-11-18