[Shell] Sélection de la n-ième chaine
Résolu
Trezeg
Messages postés
73
Date d'inscription
Statut
Membre
Dernière intervention
-
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'aimerais savoir comment récupérer un élément de la n-ième occurrence d'une chaine de caractère. Je m'explique :
dans un de mes shells, je lance la commande suivante
Merci pour votre aide.
Trez
J'aimerais savoir comment récupérer un élément de la n-ième occurrence d'une chaine de caractère. Je m'explique :
dans un de mes shells, je lance la commande suivante
inputFile=`grep bcp $currv/batchMngt/batches/$1 | awk '{print $4}'`Mon but est de pouvoir réutiliser cette ligne pour la seconde ligne contenant bcp, puis la troisième, etc...
Merci pour votre aide.
Trez
A voir également:
- [Shell] Sélection de la n-ième chaine
- Classic shell - Télécharger - Personnalisation
- Chaine tnt gratuite sur mobile - Guide
- Plus de chaine tv - Guide
- Chaine radio - Télécharger - Médias et Actualité
- Chaine musique bouygues - Accueil - Guide TV et vidéo
5 réponses
Salut,
J'ai du mal à comprendre ce que tu veux exactement !
D'abord tu parles de "récupérer un élément de la n-ième occurrence d'une chaine de caractère", puis ensuite d'après ce que je comprend, tu veux récupérer chaque ligne (enfin chaque champ $4) dans une variable...
Peux-tu m'éclairer ? Merci.
J'ai du mal à comprendre ce que tu veux exactement !
D'abord tu parles de "récupérer un élément de la n-ième occurrence d'une chaine de caractère", puis ensuite d'après ce que je comprend, tu veux récupérer chaque ligne (enfin chaque champ $4) dans une variable...
Peux-tu m'éclairer ? Merci.
Salut,
En fait tout part d'une procédure stockée crée en Sybase et qui appelle mon shell.
Ce dernier prend en paramètre un nom de fichier pour lequel il va réaliser un traitement.
J'aimerais pouvoir modifier mon shell de facon a lui ajouter un paramètre de rang qui me permettra de continuer à récupérer le 4eme champ du second paramètre
Voilou
Merci
En fait tout part d'une procédure stockée crée en Sybase et qui appelle mon shell.
Ce dernier prend en paramètre un nom de fichier pour lequel il va réaliser un traitement.
$ myShell.ksh myFile.txtCe shell recherche dans le fichier, le 4eme champ de la (ou des) ligne contenant le mot bcp.
J'aimerais pouvoir modifier mon shell de facon a lui ajouter un paramètre de rang qui me permettra de continuer à récupérer le 4eme champ du second paramètre
$ myShell.ksh myFile.txt 3Doit me donner le 4eme champs de la 3eme ligne contenant bcp.
Voilou
Merci
En reprenant ta syntaxe :
Edit : J'ai trouvé :
inputFile=`grep bcp $currv/batchMngt/batches/$1 | awk '{print $4}' | sed -n ''$2'p'`Peut être qu'une solution existe avec awk (ce qui serait plus simple), mais là je ne l'ai pas...
Edit : J'ai trouvé :
inputFile=`grep bcp $currv/batchMngt/batches/$1 | awk 'NR=='$2'{print $4}'` -- Z'@+...che.<code>JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé.
grep | awk, quel gachis de resources :-))
inputFile=` awk 'NR=='$2' && /bcp/ {print $4}' $currv/batchMngt/batches/$1`
inputFile=` awk 'NR=='$2' && /bcp/ {print $4}' $currv/batchMngt/batches/$1`
Merci dubcek mais...
:-\\
$ awk 'NR=='$2' && /bcp/ {print $4}' test.txt awk: syntax error near line 1 awk: bailing out near line 1 $Ou encore
$ set InputFile=`awk 'NR=='$2' && /bcp/ {print $4}' test.txt` awk: syntax error near line 1 awk: bailing out near line 1 $J'ai également essayé avec nawk .
$ nawk 'NR=='$2' && /bcp/ {print $4}' test.txt nawk: syntax error at source line 1 context is NR== >>> && <<< nawk: bailing out at source line 1 $
:-\\
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re- Jipicy
Ca ne filtre pas :-///
$ cat test.txt bcp secondChamp troisiemeChamp quatriemeChamp bcp secondChamp troisiemeChamp quatriemeChamp2 bcp secondChamp troisiemeChamp quatriemeChamp3 $
$ grep bcp test.txt | awk '{print $4}' quatriemeChamp quatriemeChamp2 quatriemeChamp3 $
$ grep bcp test.txt | awk '{print $4}' | sed -n ''$2'p' quatriemeChamp quatriemeChamp2 quatriemeChamp3
Ca ne filtre pas :-///