Awk : remplacement d'un élément conditionnel
drepo
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour à toute la communauté,
je suis à la disposition d'un fichier test :
(une lettre, un espace, une lettre, un espace,...) que je souhaiterais interpréter de la manière suivante :
(a chaque fois que j'ai deux "a" espacés de 6 colonnes, introduire un retour chariot devant le second "a" : noter la petite feinte sur la 3eme ligne)
j'ai donc réalisé ceci :
je tourne un peu autour du $i dans le gsub, mais je ne parviens pas à interpréter le fichier avec la bonne fréquence de un sur 6 avec $i ou $(i+6).
J'ai l'impression que je ne peux pas substituer un élement découvert de manière dynamique par double condition?
Auriez-vous des pistes? Merci d'avance
je suis à la disposition d'un fichier test :
a z e r t y a z e r t y a z e r a y a z e r t y
(une lettre, un espace, une lettre, un espace,...) que je souhaiterais interpréter de la manière suivante :
a z e r t y a z e r t y a z e r a y a z e r t y
(a chaque fois que j'ai deux "a" espacés de 6 colonnes, introduire un retour chariot devant le second "a" : noter la petite feinte sur la 3eme ligne)
j'ai donc réalisé ceci :
cat test | awk '{ for(i=1;i<=NF-6;i=i+6) { if($i="a") { if($(i+6)="a"){ gsub(/"$i"/,"\na"); } } } print; }'|less
je tourne un peu autour du $i dans le gsub, mais je ne parviens pas à interpréter le fichier avec la bonne fréquence de un sur 6 avec $i ou $(i+6).
J'ai l'impression que je ne peux pas substituer un élement découvert de manière dynamique par double condition?
Auriez-vous des pistes? Merci d'avance
A voir également:
- Awk replace
- Replace and strike any key when ready traduction ✓ - Forum Disque dur / SSD
- No system disk or disk error replace and strike any key when ready - Forum Windows 7
- Pri master hard disk smart status bad backup and replace ✓ - Forum Matériel & Système
- Replace word - Guide
- S.m.a.r.t status bad, backup and replace français - Forum BIOS
3 réponses
salut,
awk 'BEGIN{FS=OFS=" "}{for(i=1;i<=NF;i++){if(i-6>0){if($i=="a" && $(i-6)=="a")var=(var?var"\n"$i:$i);else var=(var?var OFS $i:$i)}}print var}}' test a z e r t y a z e r a y a z e r t yK.I.S.S.
Hello qqch*
je regardais la réponse que tu as faite et chez moi cela ne fonctionne pas alors que ton code me parait bon, tu utilises quelle version de awk?
BTW : avec un nawk, pas mieux?
je regardais la réponse que tu as faite et chez moi cela ne fonctionne pas alors que ton code me parait bon, tu utilises quelle version de awk?
BTW : avec un nawk, pas mieux?