Y at-il un moyen facile dans Bash de diviser un mot camelcased en ses mots constitutifs? Par exemple, je veux diviser aCertainCamelCasedWord en 'un certain mot camel Cased' et être capable de sélectionner les champs qui m'intéressent. C'est trivialement fait avec cut (1) quand le séparateur de mots est le trait de soulignement, mais comment puis-je le faire quand le mot est camelcased?Comment puis-je couper (1) les mots camelcase?
8
A
Répondre
27
sed 's/\([A-Z]\)/ \1/g'
capture chaque lettre majuscule et substitue un espace de premier plan avec la capture du flux entier.
$ echo "aCertainCamelCasedWord" | sed 's/\([A-Z]\)/ \1/g'
a Certain Camel Cased Word
0
Bash pur:
name="aCertainCamelCasedWord"
declare -a word # the word array
counter1=0 # count characters
counter2=0 # count words
while [ $counter1 -lt ${#name} ] ; do
nextchar=${name:${counter1}:1}
if [[ $nextchar =~ [[:upper:]] ]] ; then
((counter2++))
word[${counter2}]=$nextchar
else
word[${counter2}]=${word[${counter2}]}$nextchar
fi
((counter1++))
done
echo -e "'${word[@]}'"
+0
Intéressant, mais beaucoup plus bavard. Utilisez le bon outil pour le travail que je dis! ;) –
2
je devais pas séparer majuscules:
echo 'FAQPage' |sed 's/\([A-Z][^A-Z]\)/ \1/g'
FAQ Page
0
This answer ne fonctionne pas correctement quand il y a une deuxième instance de majuscules multiples
echo 'FAQPageOneReplacedByFAQPageTwo' | sed 's|\([A-Z][^A-Z]\)| \1|g'
FAQ Page One Replaced ByFAQ Page Two
Ainsi et d'expression supplémentaire est nécessaire pour que
echo 'FAQPageOneReplacedByFAQPageTwo' | sed -e 's|\([A-Z][^A-Z]\)| \1|g' -e 's|\([a-z]\)\([A-Z]\)|\1 \2|g'
FAQ Page One Replaced By FAQ Page Two
Questions connexes
- 1. Comment empêcher Hibernate de couper les chaînes?
- 2. makefile camelcase pattern matching
- 3. Comment couper deux polygones?
- 4. couper toutes les chaînes dans un tableau
- 5. JavaME: Convertir chaîne en camelCase
- 6. Comment couper toute l'application flexible?
- 7. Convertir CamelCase à under_score_case en php __autoload()
- 8. Arrêter les mots dans la fonction "Tous les mots"
- 9. Comment obtenir les mots clés dans lucene.net
- 10. Comment inverser les mots dans une colonne
- 11. comment couper des colonnes de csv
- 12. MySQL compte les mots correspondants
- 13. Couper les 4 derniers caractères de la chaîne?
- 14. Couper l'espace blanc avec PHP?
- 15. Comment couper une partie d'une chaîne avec une regex?
- 16. Comment couper une chaîne en sous-chaînes de longueur donnée
- 17. Couper les en-têtes à droite dans DataGrid
- 18. Comment puis-je configurer vim pour que les commandes de mouvement incluent des underscores et CamelCase, mais l'achèvement les ignore?
- 19. Regex pour les mots répétés avec ponctuation
- 20. Désactivation des liens CamelCase dans Confluence par page
- 21. Comment puis-je couper une transaction au printemps avec JPA?
- 22. Comment couper la chaîne datetime à sa minute dans GridView?
- 23. Comment stocker les mots de passe dans l'application Winforms?
- 24. Comment modifier les mots de passe à l'aide de System.DirectoryServices.Protocols
- 25. Comment trouver les mots répétés d'une cellule dans SQL
- 26. Comment puis-je auditer les mots de passe dans PowerShell?
- 27. Comment spécifier les conditions de rupture de mots dans IE?
- 28. Comment combiner les mots d'une phrase à des termes composés?
- 29. Comment remplacer les mots sur le thème blogger avec image?
- 30. SubSonic 3.0.0.3 C# Comment devrions-nous gérer les mots réservés?
J'adore les expressions régulières. – cwallenpoole