![]() |
Bonjour et bienvenu par les États-Unis à la UNIX et Linux Forums! Merci de votre visite et vous joindre à notre communauté mondiale.
|
|
google unix.com
|
|||||||
| Forums | S'inscrire | Forum Rules | Liens | Albums | FAQ | Liste des membres | Calendrier | Recherche | Aujourd'hui, les postes | Marquer les forums comme lus |
| UNIX pour les nuls Questions et réponses Si vous ne savez pas où poster un UNIX ou Linux question, post it here. Tous les systèmes UNIX et Linux, débutants bienvenus! |
Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
|
||||
| Fil | Thread Starter | Forum | Réponses | Last Post |
| Très urgent: - Comment comparer chaîne de caractères en utilisant if | JISHA | De programmation et de script Shell | 1 | 01-14-2008 03:41 AM |
| tout lire en boucle w / a nested if - ne traite pas individuellement chaque entrée | littlefrog | De programmation et de script Shell | 7 | 12-11-2007 09:49 PM |
| Pour loop statement - captures d'erreur | lumdev | De programmation et de script Shell | 4 | 09-20-2007 07:50 AM |
| si, dans une boucle while | bobo | UNIX pour les nuls Questions et réponses | 2 | 11-07-2006 12:38 PM |
| Aide à la boucle si (comparaison de chaîne de caractères) | psynaps3 | De programmation et de script Shell | 4 | 07-07-2006 02:36 AM |
![]() |
|
|
LinkBack | Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
|
|
||||
|
si déclaration en boucle d'une chaîne de caractères
Je tente de transmettre une chaîne en boucle awk et à travers elle, et ensuite pour chaque occurrence d'un certain caractère effectuer une action. Dans ce cas, par exemple, echo 1 pour chaque caractère r est trouvée dans la chaîne. Sauf que je ne peux pas le faire au travail. Quelqu'un pourrait-il me dire pourquoi s'il vous plaît?
echo $ chaine | awk '( for (i \u003d 1; i <\u003d length ($ 0); i + +) faire if (substr ($ 0, i, 1) \u003d\u003d "r") echo "1" fi fait ) ' |
|
||||
|
Merci pour votre réponse, mais je veux qu'il boucle à travers la chaîne, puis effectuer une action pour chaque occurrence de r, pas une seule fois. par exemple. "rover" de retour 11 dans cet exemple parce qu'il ya deux r à l'intérieur.
J'ai essayé d'adapter votre code pour qu'il ressemble à ceci: echo $ chaine | awk '( for (i \u003d 1; i <\u003d length ($ 0); i + +) faire if [[(substr ($ 0, i, 1) \u003d\u003d * r *)]], puis echo "1" fi; fait ) ' mais vous analysez toutes les erreurs sur la place: awk: cmd. ligne: 4: if [[(substr ($ 0, i, 1) \u003d\u003d * r *)]], puis awk: cmd. ligne: 4: ^ parse error awk: cmd. ligne: 4: if [[(substr ($ 0, i, 1) \u003d\u003d * r *)]], puis awk: cmd. ligne: 4: ^ parse error awk: cmd. ligne: 4: if [[(substr ($ 0, i, 1) \u003d\u003d * r *)]], puis awk: cmd. ligne: 4: ^ parse error D'autres idées? |
|
||||
|
Citation:
En ce qui concerne la cause, je tiens à dire que le mai-dessus ne résout pas le problème, est d'avoir OP. Il est à la recherche de no. d'occurrence d'un caractère dans une chaîne de caractères. Et la commande ci-dessus donnera toujours une sortie de 1 si il ya un ou plus d'une occurrence de "r" Veuillez me corriger si je me trompe Gaurav |
|
|||||
|
Citation:
Good catch. |
![]() |
| Bookmarks |
| Thread Tools | Recherche sur ce Thread |
| Modes d'affichage | Rate this thread |
|
|