Résolu Extraction de lignes particulières d'un fichier

JPetrucci

Habitué
Merci beaucoup à vous deux pour vos conseils !
pour la syntaxe effectivement je n'avais pas respecté les changements de ligne, etc... il faut que j'apprenne mieux ce langage.

j'ai testé ta version en 2 lignes mykhi et ça a bien marché (j'attends un peu que la discussion soit terminée avant de choisir la meilleure réponse mais je pense que je prendrai la tienne mykhi).
Par contre vu que je débute c'est un peu une boite noire pour moi, pourriez-vous m'aider à comprendre la première partie de cette ligne de commande ?

[cpp]
awk 'NR%4==0{print $0}' $FICHIER > fichiertest.txt[/cpp]

que veulent dire donc le %, NR, et pourquoi le ==0, de même le print $0 ?
ça m'aiderait à comprendre pour pouvoir l'adapter ensuite et choisir à partir de quelle ligne je veux que ça me prenne une ligne sur 4 ou pour d'autres situations.

merci d'avance ;)

 

mykhi

Force Modéra-Bleue
Staff
NR : numéro de ligne courant lors de l'analyse
% : modulo
== 0 : teste l'égalité à 0 du modulo( si c'est un multiple de 4 (16 modulo 4 = 0, 17 modulo 4 = 1, ...)
$0 : ligne courante entière ($1 = 1er élément de la ligne, $2 = 2è élément de la ligne, ... selon un séparateur à définir)
 

JPetrucci

Habitué
d'accord merci pour ces précisions !
du coup j'ai donc changé la condition du modulo en 2 et 3 pour récupérer dans 2 autres fichiers les 2 autres lignes qui m'intéressent, ça a bien marché.
Il ne me reste plus ensuite qu'à filtrer puis concaténer...

sujet résolu donc, merci encore à vous deux ! ;)
 

zeb

Modérateur
Rhoooo !

JPetrucci, quand je te propose d'étudier tel bout de code, j'entends que tu fasses l'effort de chercher toi-même, de tester, de lire la doc, etc. Si tu te contentes de poser la question icic, tu n'avanceras pas, ou très lentement. Et tu reviendras poser les mêmes questions. C'est dommage.

Sauf que ça fera des topics en plus, des pages vues, de la pub vue. Bref, BOM ne t'en voudra pas. ;)

En parlant de faire un effort, tu veux bien mettre des balises
Code:
 là ou tu as écris [quote] dans ton premier message. C'est juste pour faire joli.
 

JPetrucci

Habitué
Salut Zeb, concernant le bout de code que tu m'avais filé au début je l'ai regardé oui et j'ai essayé de comprendre comment il fonctionnait, peut-être pas aussi en profondeur que tu l'aurais voulu mais c'est vrai qu'en même temps "étudier" me paraissait vague et je ne voyais pas où vraiment tu voulais en venir, mais ça m'a quand même permis de comprendre que j'avais fait une erreur dans mon script initial au moins en oubliant de mettre des entrées dans les BEGIN et END, etc...

Après la doc bien évidemment je la lis mais quand tu as des pages de docs et que tu as des tas de petites fonctions comme awk, grep, etc.... c'est pas forcément évident de se contenter de la doc pour avancer, sur des docs aussi fournies on passe toujours à côté de choses on des fois on en interprète mal d'autres.

Puis si je ne faisais pas l'effort de chercher moi-même je n'aurais pas demandé plus de détails sur la construction des lignes qu'on m'a proposé ici, je me serais contenté de recopier bêtement sans comprendre, non ?
c'est justement en lisant les docs et les forums que j'ai pu tenter mon script initial, et c'est parce que je suis passé à côté de choses que j'ai posé ma question ici, pour en apprendre plus sur ce que j'utilisais mal ;)
 

zeb

Modérateur
C'est juste. :)

Tiens, j'ai fait un tuto de bonnes pratiques pour les utilisateurs du shell :

Il y a tant de petites commandes sous UNIX ! Mais c'est son grand avantage.

Les commandes à connaître : cat, grep, tail, head.
Celles à bien étudier : sed, awk.

Pour les autres commandes, il faut savoir à peu près à quoi elle servent et se référer à la manpage page au coup par coup.

A savoir que la commande awk est un véritable langage de programmation. Savoir bien l'utiliser est un avantage qui justifie qu'on se penche sur son étude. Certains ne s'embarrassent pas, et plutôt que d'utiliser le shell, préfère directement tout faire en perl.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 175
Messages
6 718 844
Membres
1 586 473
Dernier membre
ayane//-
Partager cette page
Haut