#1 Le 23/10/2020, à 16:33
- diesel
[RÉSOLU] Rechercher un numéro de ligne dans un fichier
Bonsoir,
J'ai un fichier (disons toto) constitué de la manière suivante :
blabla{
une ligne
encore une ligne
une autre ligne
}
Éventuellement encore un peu de texte
Je veux trouver le numéro de la ligne contenant le "}" (qui est unique dans le fichier)
Pour cela, j'ai codé :
variable_toto=$(grep -n "}" toto | cut -d: -f1)
mais y a-t-il plus astucieux ?
Amicalement.
Jean-Marie
Dernière modification par diesel (Le 24/10/2020, à 09:40)
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#2 Le 23/10/2020, à 16:52
- nany
Re : [RÉSOLU] Rechercher un numéro de ligne dans un fichier
Bonjour,
variable_toto=$(sed -n '/^}$/=' toto)
?
Hors ligne
#3 Le 23/10/2020, à 18:11
- Hizoka
Re : [RÉSOLU] Rechercher un numéro de ligne dans un fichier
Salut,
essaie d'avoir des titres en lien avec ta demande, ça attirera plus de personnes en capacité de t'aider et surtout pour les gens qui font des recherches.
variable_toto=$(grep -n "}" toto)
variable_toto="${variable_toto%%:*}"
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#4 Le 23/10/2020, à 18:18
- beuguissime
Re : [RÉSOLU] Rechercher un numéro de ligne dans un fichier
Bonsoir,
Salut,
essaie d'avoir des titres en lien avec ta demande, ça attirera plus de personnes en capacité de t'aider et surtout pour les gens qui font des recherches.
Tout à fait raison. Et je crois que ça n'est pas la première fois que le titre est, disons, original.*
Si bien unique accolade fermante,
awk '/^}$/ {print NR}'
Ajout :
*exemples des derniers sujets
La petite question du soir du jour par diesel
[RÉSOLU] Autre petite question du soir par diesel
[RÉSOLU] Petite question du soir par diesel
[RESOLU] Petite question très simple (pour vous) par diesel
Dernière modification par beuguissime (Le 23/10/2020, à 18:25)
Hors ligne
#5 Le 23/10/2020, à 20:51
- diesel
Re : [RÉSOLU] Rechercher un numéro de ligne dans un fichier
Ben..., jusqu'ici, avec ce genre de titre, j'ai eu des réponses particulièrement pertinentes. Et ceux qui m'ont fourni ces réponses n'ont pas eu l'air particulièrement gênés par le titre du sujet.
là, j'ai deux réponses avec sed et awk. Je m'y attendais un peu.
La question que je me pose est : Est-ce plus rapide (efficace) de sortir l'artillerie lourde (un éditeur ou un interpréteur de commande) pour résoudre un problème aussi simple ? Et est-ce qu'il existerait une option de grep qui permettrait d'avoir uniquement le numéro de ligne en sortie sans le pipe vers cut ?
Amicalement.
Jean-Marie
Dernière modification par diesel (Le 23/10/2020, à 20:55)
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#6 Le 23/10/2020, à 21:22
- Zakhar
Re : [RÉSOLU] Rechercher un numéro de ligne dans un fichier
La façon d'afficher des utilitaires GNU est figée depuis longtemps car plein de shell comptent sur cette façon précise de faire les choses, vu que le shell manipule essentiellement des chaînes de caractères via ces utilitaires de base.
Donc non, tu as bien lu le manuel de "grep", il n'y a rien d'autre que le -n qui en plus du numéro de ligne, affiche aussi la ligne elle-même.
Sinon effectivement, il faut recourir à sed ou awk... ou écrire ton propre programme qui fait la sortie souhaitée.
A mon avis la performance de sed doit être quasi identique à grep dans ce cas. Ce qui coûte cher c'est "compiler" l'expression régulière (idem pour les deux) puis ensuite lire tout le fichier en appliquant l'expression (encore idem pour les deux).
Ensuite tu as l'affichage du résultat, sans doute un poil plus long avec sed puisque il doit interpréter ce que veut l'utilisateur au lieu d'avoir une option "compilée" pour grep. Mais comme dans l'énoncé, la ligne n'existe qu'une fois, tu n'as qu'un affichage et ça ne doit pas faire la moindre différence notable.
D'ailleurs en pratique, tu peux faire (plus ou moins facilement) absolument tout ce que fait grep avec sed (l'inverse n'est bien sûr pas vrai !). grep est juste plus simple à comprendre pour les choses simple qu'il sait faire qu'une expression sed.
Pour awk je ne saurais dire, jamais creuser le sujet !
Dernière modification par Zakhar (Le 23/10/2020, à 21:29)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#7 Le 23/10/2020, à 21:27
- beuguissime
Re : [RÉSOLU] Rechercher un numéro de ligne dans un fichier
Ça n'est pas parce que personne n'a rien dit jusqu'à présent que ta pratique est bonne ou que personne ne s'est fait la remarque intérieurement. Comment veux-tu qu'on retrouve tes demandes avec des titres aussi vagues ?
grep, awk ou sed sont un peu du même calibre, pour rester dans la métaphore de l'artillerie. Je ne comprends où tu veux en venir en fait, dans le sens où, si tu acceptes une solution à base de grep, pourquoi ne pas accepter une solution à base de awk ou sed ?
Hors ligne
#8 Le 23/10/2020, à 21:28
- diesel
Re : [RÉSOLU] Rechercher un numéro de ligne dans un fichier
Bon, pour une fois, je crois que je vais garder mon codage qui, de plus, est conforme aux principe KISS
Dixit wikipedia :
Selon Eric S. Raymond, la philosophie d'Unix se résume à ce principe qui s'applique au monde informatique Unix2. Sous un système d'exploitation de ce type, il peut s'illustrer par le fait qu'un shell propose beaucoup de petits utilitaires faisant des choses simples (ls, grep, find, cut, wc…) et un moyen de les combiner, le pipe (|).
De plus, cette ligne ne sera vraiment pas appelée souvent. Je n'ai donc aucun problème de performance.
Amicalement.
Jean-Marie
Dernière modification par diesel (Le 23/10/2020, à 21:40)
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#9 Le 23/10/2020, à 21:39
- diesel
Re : [RÉSOLU] Rechercher un numéro de ligne dans un fichier
Ça n'est pas parce que personne n'a rien dit jusqu'à présent que ta pratique est bonne ou que personne ne s'est fait la remarque intérieurement. Comment veux-tu qu'on retrouve tes demandes avec des titres aussi vagues ?
grep, awk ou sed sont un peu du même calibre, pour rester dans la métaphore de l'artillerie. Je ne comprends où tu veux en venir en fait, dans le sens où, si tu acceptes une solution à base de grep, pourquoi ne pas accepter une solution à base de awk ou sed ?
Tu peux rechercher (si ça t'amuse) les titres de mes différents sujets.
Lorsque je pose une "vraie" question, je fais attention de mettre un sujet explicite (et ce n'est pas pour ça, d'ailleurs, que j'obtiens toujours des réponses satisfaisantes à mes problèmes). Cela dit, ne crois pas que j'en veuille une seule seconde aux intervenants qui sont intervenus sur ces sujets.
Là, je sais faire. On en est à une discussion quasi philosophique sur la meilleure manière de résoudre un problème donné et dans ce cas, un titre façon "appât" ne me paraît pas inadapté.
Amicalement.
Jean-Marie
Dernière modification par diesel (Le 24/10/2020, à 09:39)
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#10 Le 23/10/2020, à 22:14
- Watael
Re : [RÉSOLU] Rechercher un numéro de ligne dans un fichier
sur un forum, on prend soin des autres. Y compris ceux qui rechercheraient/cheront une solution au même problème.
d'où l'intérêt d'indiquer le sujet du message dans le titre.
si tu persistes dans cette attitude puérile, je signalerai tes messages comme hors sujet, et j'invite les autres participants à faire de même.
c'est parfaitement cohérent, puisque le sujet n'indique pas le contenu du message !
Dernière modification par Watael (Le 23/10/2020, à 22:16)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#11 Le 23/10/2020, à 22:31
- beuguissime
Re : [RÉSOLU] Rechercher un numéro de ligne dans un fichier
Tu peux rechercher (si ça t'amuse) les titres de mes différents sujets.
Ça n'est pas une histoire de s'amuser à chercher tes sujets. C'est une histoire de considérer un forum comme une grande base documentaire ou une grande FAQ et de faire en sorte que ça soit utile quelques temps à d'autres. Et pour retrouver une information rapidement, il faut que les sujets aient des titres explicites pour une bonne indexation par les moteurs de recherches. C'est une histoire d'être égoiste ou pas. En fait, tu donnes l'impression de vouloir une aide privée, et dans ce cas, tu te trompes d'endroit. En plus, je pense que ton comportement est en infraction avec la charte. Donc à la limite, il n'y a pas matière à débat. J'avais déjà tiqué sur tes précédents sujets et j'ai profité qu'une personne se lance. Note que je trouve tes colles intéressantes, c'est vraiment bête de ne pas jouer le jeu du forum.
Autonomie
Il est conseillé, avant de poser une question, de vérifier qu'une réponse ne se trouve pas déjà dans la documentation ou dans un autre sujet du forum. Les doublons volontaires sont interdits. En revanche, les questions différentes doivent être traitées dans un sujet différent, afin de gagner en lisibilité. Les titres des discussions doivent être explicites.
Hors ligne
#12 Le 23/10/2020, à 22:57
- Hizoka
Re : [RÉSOLU] Rechercher un numéro de ligne dans un fichier
Comme dit plus haut, tes questions reçoivent des réponses, c'est une façon de remercier les gens qui t'aident
Pas la peine de te braquer pour ça, c'est une dépense énergétique inutile.
Dernière modification par Hizoka (Le 23/10/2020, à 22:58)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#13 Le 24/10/2020, à 09:36
- diesel
Re : [RÉSOLU] Rechercher un numéro de ligne dans un fichier
Ok, ok, je me rends (je comprends vos arguments).
Je ne poserai plus de petites questions (que ce soit du matin ou du soir). Ce qui est une manière de dire que je mettrai des titres explicites.
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne