[Shell] Sélection de la n-ième chaine
Résolu
Trezeg
Messages postés
81
Statut
Membre
-
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18627 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
Configuration: SunOS 5.9
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.
-
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.$ myShell.ksh myFile.txt
Ce 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 3
Doit me donner le 4eme champs de la 3eme ligne contenant bcp.
Voilou
Merci -
En reprenant ta syntaxe :
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`-
-
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
$ 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 :-///