Help! while avec awk
Résolu
cosmokat
Messages postés
7
Statut
Membre
-
jipicy Messages postés 41342 Statut Modérateur -
jipicy Messages postés 41342 Statut Modérateur -
Bonjour,
je suis coincé avec un problème de boucle dans awk:
FREQ=`/bin/awk -v F="" 'BEGIN NR==2 {i=14 };
while ($i /^[0-9][0-9]*$/)
{ F=$F"&"$i
i++
}
END {print $F; exit}' /home/omc/test/FILE`
Les enregistrements 14 à 26 du fichier FILE ligne 2 sont des nombres et je veux affecter à
FREQ la valeur &$14&$15&16...&$26
Est ce que qq un peut me dépanner ?
je suis coincé avec un problème de boucle dans awk:
FREQ=`/bin/awk -v F="" 'BEGIN NR==2 {i=14 };
while ($i /^[0-9][0-9]*$/)
{ F=$F"&"$i
i++
}
END {print $F; exit}' /home/omc/test/FILE`
Les enregistrements 14 à 26 du fichier FILE ligne 2 sont des nombres et je veux affecter à
FREQ la valeur &$14&$15&16...&$26
Est ce que qq un peut me dépanner ?
A voir également:
- Help! while avec awk
- Eol while scanning string literal ✓ - Forum Python
- Application error: a client-side exception has occurred while loading www.leboncoin.fr (see the browser console for more information). - Forum Services en ligne
- Error code 1309 mac while copying ✓ - Forum MacOS
- Accès impossible à mon compte Bon Coin ✓ - Forum Réseaux sociaux
- Awk bash ✓ - Forum Linux / Unix
8 réponses
J ai essayé sans while et ç est pareil
FREQ=`/bin/awk -v F="" 'BEGIN NR==2 { i=14 }
$i /^[0-9][0-9]*$/ { F=F"&"$i ; i++ }
END { print F; exit }' /home/omc/CT2000/ExportCT/RITLS`
> awk: syntax error near line 1
> awk: bailing out near line 1
snif !
FREQ=`/bin/awk -v F="" 'BEGIN NR==2 { i=14 }
$i /^[0-9][0-9]*$/ { F=F"&"$i ; i++ }
END { print F; exit }' /home/omc/CT2000/ExportCT/RITLS`
> awk: syntax error near line 1
> awk: bailing out near line 1
snif !
Salut,
Tu peux afficher le contenu de ton fichier "FILE" s'il te plaît, parce que là sans exemple précis c'est pas facile d'évaluer ton code.
Merci ;-))
Tu peux afficher le contenu de ton fichier "FILE" s'il te plaît, parce que là sans exemple précis c'est pas facile d'évaluer ton code.
Merci ;-))
Voici la ligne 2 du fichier FILE
3 134 AA BB CC 0 1 3 6 14 12800 46486 14 28 29 30 31 32 33 34 35 36 37 38 39 40 DD
Je voudrai obtenir FREQ=28&29&30...&40
3 134 AA BB CC 0 1 3 6 14 12800 46486 14 28 29 30 31 32 33 34 35 36 37 38 39 40 DD
Je voudrai obtenir FREQ=28&29&30...&40
Re-
Essaie ça (adapte en fonction) :
Essaie ça (adapte en fonction) :
#! /bin/bash
FREQ=$(/bin/awk -v G="" 'BEGIN {
i=14
}
{
while ( $i~/^[0-9][0-9]*$/ ) {
G=G"&"$i
i++
}
}
END {
print G; exit
}' /home/jp/tmpfs/FILE.txt)
echo "FREQ="$FREQ
exitCe qui donne chez moi :[jp@MDK tmpfs]$ cat FILE.txt ceci est un exemple 3 134 AA BB CC 0 1 3 6 14 12800 46486 14 28 29 30 31 32 33 34 35 36 37 38 39 40 DD fin de l'exemple [jp@MDK tmpfs]$ ./essai.sh FREQ=&28&29&30&31&32&33&34&35&36&37&38&39&40 [jp@MDK tmpfs]$;-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci pour la solution en /bin/bash
En fait je voudrai poursuivre en sh
je remarque que c' est l option -v qui pose problème.
Lorsque je remplace /bin/awk par /usr/xpg4/bin/awk
y a plus de pb avec l option -v mais du coup je dois réécrire
la boucle différement et je connais pas la particularité xpg4...
En fait je voudrai poursuivre en sh
je remarque que c' est l option -v qui pose problème.
Lorsque je remplace /bin/awk par /usr/xpg4/bin/awk
y a plus de pb avec l option -v mais du coup je dois réécrire
la boucle différement et je connais pas la particularité xpg4...
Ben essaie comme ça alors :
#! /bin/sh
FREQ=$(/bin/awk 'BEGIN {
G=""
i=14
}
{
while ( $i~/^[0-9][0-9]*$/ ) {
G=G"&"$i
i++
}
}
END {
print G; exit
}' /home/jp/tmpfs/FILE.txt)
echo "FREQ="$FREQ
exit;-))
Un grand merci jipicy !
Ton script m a permis de ne pas utiliser -v
Et à la différence de $( ) qui pour moi est ` ` ça marche !!!!!!
$ FREQ=`/bin/awk 'BEGIN { F="" ; i=14 }
> { while( $i~/^[0-9][0-9]*$/ ) { F=F"&"$i ; i++ } }
> END{ print F; exit }' /home/omc/TEST/FILE`
$ echo $FREQ
&28&29&30&31&32&33&34&35&36&37&38&39&40
$
Ton script m a permis de ne pas utiliser -v
Et à la différence de $( ) qui pour moi est ` ` ça marche !!!!!!
$ FREQ=`/bin/awk 'BEGIN { F="" ; i=14 }
> { while( $i~/^[0-9][0-9]*$/ ) { F=F"&"$i ; i++ } }
> END{ print F; exit }' /home/omc/TEST/FILE`
$ echo $FREQ
&28&29&30&31&32&33&34&35&36&37&38&39&40
$