Opération sur numero de ligne

Résolu
needhelp -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai lu divers sujets sur la numérotation de ligne d'un fichier qui m'ont bien aidé.
Je voudrai pouvoir afficher une ligne en faisant des opérations sur les numéros :s
Je m'explique pour que ça soit plus clair ^^

exemple :

fichier texte toto.txt contenant :

le fichier tata.txt
a bien
été enregistré
nous vous remercions
veuillez passer une
bonne fin de journée

je cherche dans le fichier tata.txt , la chaîne "a bien" en faisant :
ligne=$(grep -n 'a bien' tata.txt | cat -d:f1);

Par rapport a cette ligne où se trouve la chaîne, je souhaiterai récupérer la 3eme ligne (et nom pas le numéro) après celle-ci
Donc en gros un $ligne=$ligne+3 pour récupérer dans une variable la chaine "veuillez passer une"

Merci

5 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Une solution parmi d'autres avec "sed" :

    jp@MDK:~/tmpfs ssh$ cat plop
    le fichier tata.txt
    a bien
    été enregistré
    nous vous remercions
    veuillez passer une
    bonne fin de journée
    
    jp@MDK:~/tmpfs ssh$ ligne="a bien"
    
    jp@MDK:~/tmpfs ssh$ var=$(sed -n '/'"${ligne}"'/{n;n;n;p}' plop)
    
    jp@MDK:~/tmpfs ssh$ echo ${var}
    veuillez passer une
    
    jp@MDK:~/tmpfs ssh$

    ;-))
    0
  2. needhelp
     
    Un grand merci ça marche !

    Mais j'ai un autre problème pour ça je fais un exemple plus concret :

    fichier texte :

    transfert de toto.txt
    taille 400 ko
    vitesse 10ko/s
    transfert terminé
    transfer de toto.txt.1
    taille 400 ko
    vitesse 10ko/s
    transfert terminé

    Donc le problème en cherchant dans le fichier la chaine qui contient "toto.txt".
    Ça va m'afficher :

    transfert terminé transfert terminé

    En gros le fichier toto.txt.1 est la version antécédente que je garde et transfert.
    A la fin en gros je voudrais dans un fichier texte :

    détail du fichier toto.txt
    transfert terminé

    détail du fichier toto.txt.1
    transfert terminé
    0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    jp@MDK:~/tmpfs ssh$ cat plop
    transfert de toto.txt
    taille 400 ko
    vitesse 10ko/s
    transfert terminé
    transfer de toto.txt.1
    taille 400 ko
    vitesse 10ko/s
    transfert terminé
    
    jp@MDK:~/tmpfs ssh$ sed -n '/toto/{h;n;n;n;H;g;p}' plop
    transfert de toto.txt
    transfert terminé
    transfer de toto.txt.1
    transfert terminé
    
    jp@MDK:~/tmpfs ssh$

    ;-))
    0
  4. needhelp
     
    Je t'en remercie ^^

    Efficace et rapide lol !
    Bonne journée !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    une solution avec awk
    $ cat a2
    transfert de toto.txt
    taille 400 ko
    vitesse 10ko/s
    transfert terminé
    transfer de toto.txt.1
    taille 400 ko
    vitesse 10ko/s
    transfert terminé 
    $ 
    $ awk '/toto/ {n=NR;print}; NR==n+3 {print}' a2
    transfert de toto.txt
    transfert terminé
    transfer de toto.txt.1
    transfert terminé 
    $ 
    0