Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 27/03/2020, à 19:43

pingouinux

Re : AWK déplacer les lignes d'un fichier vers le bas

judkil #12 a écrit :

Dans la continuité, auriez vous une idée de comment appliquer une commande uniquement sur un bloque de ligne, par exemple uniquement de la ligne 3 à 5

C'est ce que j'ai fait en #23.
Si ça ne convient pas, précise ta demande.

Hors ligne

#27 Le 27/03/2020, à 20:00

judkil

Re : AWK déplacer les lignes d'un fichier vers le bas

Si j'applique le code suivant

awk 'NR>=3 && NR<=5 {print $2, $1, $3, $4}' input >output

J'aurai ceci :

XXX AB-0008 XXX XXX 
XXX A8-0006 XXX XXX
XXX A8-0005 XXX XXX

et non ceci

AB-0007 XXX XXX XXX XXX XXX XXX
AB-0004 XXX XXX XXX XXX XXX XXX
XXX AB-0008 XXX XXX 
XXX A8-0006 XXX XXX
XXX A8-0005 XXX XXX 

J'essai de garder les premières lignes avec un BEGIN ou en mettant le code proposé dans un END/

Dernière modification par judkil (Le 27/03/2020, à 20:01)

Hors ligne

#28 Le 27/03/2020, à 20:08

Watael

Re : AWK déplacer les lignes d'un fichier vers le bas

c'est de moins en moins clair : le tri a été effectué sur le fichier entier, qu'est-ce que tu veux faire des lignes 3 à 5 ?
elles ne sont plus, par rapport au fichier original, à la même place.
c'est pas clair.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#29 Le 27/03/2020, à 20:12

judkil

Re : AWK déplacer les lignes d'un fichier vers le bas

Voilà mon input

AB-0007 XXX XXX XXX XXX XXX XXX
AB-0004 XXX XXX XXX XXX XXX XXX
AB-0008 XXX XXX XXX 
A8-0006 XXX XXX XXX
A8-0005 XXX XXX XXX 

et j'aimerai le output suivant:

AB-0007 XXX XXX XXX XXX XXX XXX
AB-0004 XXX XXX XXX XXX XXX XXX
XXX AB-0008 XXX XXX 
XXX A8-0006 XXX XXX
XXX A8-0005 XXX XXX 

L'idée serait d'appliquer un bloc d'intructions que sur les 3 dernières lignes et garder les premières lignes intactes.

Dernière modification par judkil (Le 27/03/2020, à 20:13)

Hors ligne

#30 Le 27/03/2020, à 20:25

Watael

Re : AWK déplacer les lignes d'un fichier vers le bas

ah, mais si tu changes les règles du jeu en cours de partie...

nouvelle requête -> nouveau sujet !

bon, puisqu'on y est.
d'abord, rappeler la solution que tu as adoptée pour obtenir ton input
ensuite, on adaptera !


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#31 Le 27/03/2020, à 20:32

judkil

Re : AWK déplacer les lignes d'un fichier vers le bas

Pour la solution proposée pour le sujet, j'ai utilisé la solution proposée par pingouinux à 11h33 sur ce forum

Si tu as une solution pour le message du 19h12, proposes-la par ce que j'ai l'impression que l'on parle beauucoup beaucouppp

Dernière modification par judkil (Le 27/03/2020, à 20:36)

Hors ligne

#32 Le 27/03/2020, à 20:48

Watael

Re : AWK déplacer les lignes d'un fichier vers le bas

le problème, pour toi, c'est que l'affichage se fait après la lecture du fichier, dans la clause END.
et puis la solution de pingouinux ne me convient pas car elle manque de souplesse.
donc, je reprend la mienne.

 mawk '{ar[-NF,-NR]=$0}END{for(i in ar)if(++n <3)print ar[i]; else { split(ar[i],ar2," "); sub(ar2[1]" "ar2[2]" ","",ar[i]); print ar2[2],ar2[1],ar[i]}}' fichier.txt
AB-0004 XXX XXX XXX XXX XXX XXX
AB-0007 XXX XXX XXX XXX XXX XXX
XXX A8-0005 XXX XXX 
XXX A8-0006 XXX XXX
XXX AB-0008 XXX XXX

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#33 Le 27/03/2020, à 21:00

judkil

Re : AWK déplacer les lignes d'un fichier vers le bas

En awk pas en mawk ! Y a rien de mal à faire simple bien au contraire smile

Dernière modification par judkil (Le 27/03/2020, à 21:02)

Hors ligne

#35 Le 27/03/2020, à 21:13

judkil

Re : AWK déplacer les lignes d'un fichier vers le bas

Je vais arreter de répondre ici  ! C'est une question de débutant et  Watael tu parles beaucoup et tu proposes une solution hyper compliquée ça devient hyper soulant !

Quelqu'un a un proposition pour le message du 19h12 je suis preuneur sinon

Dernière modification par judkil (Le 27/03/2020, à 21:17)

Hors ligne

#36 Le 27/03/2020, à 21:16

judkil

Re : AWK déplacer les lignes d'un fichier vers le bas

Oui j'ai aussi posé la question sur un autre forum kamaris, car j'ai besoin de la réponse pour travailler mais je ne suis pas un robot y a pas de soucis !

Dernière modification par judkil (Le 27/03/2020, à 21:16)

Hors ligne

#37 Le 27/03/2020, à 21:30

pingouinux

Re : AWK déplacer les lignes d'un fichier vers le bas

awk '{if(NR>=3 && NR<=5) {print $2, $1, $3, $4} else print}' input >output

Hors ligne

#38 Le 28/03/2020, à 01:03

Watael

Re : AWK déplacer les lignes d'un fichier vers le bas

oui, mais, pingouinux, cette solution suppose un fichier intermédiaire entre le fichier du #1, et le présent fichier input.

@judkil : non, ce qui est saoulant, c'est les gens qui n'y connaissent rien et qui croient que  pour faire un joli paquet on peut utiliser du papier journal et du fil à coudre.
pour ton information, mawk est l'implémentation la plus POSIX de awk, et vu que tu ne peux pas utiliser GNU/awk...

ma solution n'est pas compliquée. tu t'en rendras compte dans quelques mois, s'ils te gardent; mais ça c'est pas gagné avec les a priori* que tu te traînes.

--
*pour rester poli.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#39 Le 28/03/2020, à 10:33

pingouinux

Re : AWK déplacer les lignes d'un fichier vers le bas

Watael #38 a écrit :

oui, mais, pingouinux, cette solution suppose un fichier intermédiaire entre le fichier du #1, et le présent fichier input.

C'est exact, mais comme les demandes de judkil changent sans arrêt, j'ai répondu à la dernière, en #29

Hors ligne

#40 Le 28/03/2020, à 14:17

judkil

Re : AWK déplacer les lignes d'un fichier vers le bas

Merci beaucoup à vous, la solution de pingouinux de 20h30 fontionne très bien !! Maintenant ce post est résolut smile

Hors ligne