OVH Cloud OVH Cloud

damande d'aide pour scripts.

1 réponse
Avatar
bxman
bonjour j'ai un souci sur un script sur AIX

j'ai un fichier qui regroupe mes valeurs que va prendre ma variable
je veux utiliser une boucle du genre for i in 'cat nomdufic'
do

Mais :
J'aimerais pour chaque valeur, pouvoir aller chercher cette variable dans
un autre fichier toto, et lorsque qu'elle est trouvée, que la ligne qui est
située 7 lignes audessus de la ligne ou se trouve la variable dans toto soit
mise dans un fichier en sortie.

j'ai pensé à ed ou edit, mais le fichier ne peut exceder 128K, et mon
fichier toto est largement superieur à cette taille limite, ce qu'il fait
qu'il est tronquée

Siqq'un à une id&ée pour me venir en aide, je suis preneur, car je sèche
carrement.

Merci

1 réponse

Avatar
Stephane Chazelas
2004-11-17, 18:28(+01), bxman:
bonjour j'ai un souci sur un script sur AIX

j'ai un fichier qui regroupe mes valeurs que va prendre ma variable
je veux utiliser une boucle du genre for i in 'cat nomdufic'
do

Mais :
J'aimerais pour chaque valeur, pouvoir aller chercher cette variable dans
un autre fichier toto, et lorsque qu'elle est trouvée, que la ligne qui est
située 7 lignes audessus de la ligne ou se trouve la variable dans toto soit
mise dans un fichier en sortie.

j'ai pensé à ed ou edit, mais le fichier ne peut exceder 128K, et mon
fichier toto est largement superieur à cette taille limite, ce qu'il fait
qu'il est tronquée
[...]


Peut-etre:

awk '
BEGIN {
while ((getline < "nomdufic") > 0)
a[$0]=""
}
NR > 7 && $0 in a {
print b[(NR-7)%7]
delete b[$0]
}
{ b[NR%7] = $0 }' < toto > fichier-en-sortie

Ca suppose que les valeurs dans nomdufic sont uniques. Les
lignes apparaissent dans l'ordre ou elles sont dans "toto".

--
Stephane