Afficher une ligne sur deux

Résolu
Sabetodo Messages postés 127 Statut Membre -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
salut les gars, je dois ecrire une ligne de commande qui prend la sortie d'un "ls -l" et qui n'affiche qu'une ligne sur deux a partir de la premiere. je l'ai fait, mais ce n'est pas evident et j'ai besoin d'un coup de main.
voici ce que j'ai fait:
(ca_n@qnx 2111)ls -l | sed '$N;s/\n//'

le resultat devrait etre par exemple:
0*************
2*************
4*************
6*************
Configuration: Linux
Firefox 1.0.7

1 réponse

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    sed -n 1~2p
    0
    1. Sabetodo Messages postés 127 Statut Membre 3
       
      salut jipicy c'est gentil de ta part de m'avoir repondu a temps. En fait, j'avais essaie cette option, il m'a affiche ce message la: "sed: 1: "1~2p": invalid command code ~".
      je ne sais plus faire.
      0
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > Sabetodo Messages postés 127 Statut Membre
         
        Alors essaie comme ça :
        sed '1n;N;s/.*\n//'
        ;-))
        0
      2. Sabetodo Messages postés 127 Statut Membre 3 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        merci beaucoup jipicy, je viens de tester ce que tu m'a propose et ca marche tout a fait. Bonne journee.
        0
      3. nestoyeur > Sabetodo Messages postés 127 Statut Membre
         
        Bonjour, quelqu'un pourrais m'aider a decortiquer cette expression reguliere afin de la comprendre ?
        0
      4. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501 > nestoyeur
         
        Salut,

        1n
        Quand on rencontre la 1ère ligne, on passe à la suivante (tout en affichant la 1ère ligne sur la sortie standard (l'écran))

        N
        Pour le reste, à chaque ligne rencontrée on ajoute la suivante dans l'espace de travail, ce qui nous donne en gros une ligne qui ressemble à :
        une ligne blabla\nune autre ligne blabla

        remarque le caractère "\n" (fin de ligne) entre les 2 lignes.

        s/.*\n//
        On supprime tout (.*) ce qui précède le caractère fin de ligne (\n) et on affiche le reste sur la sortie standard.

        Une meilleure façon de faire serait
        sed -n 'N;P;d' fichier
        qui fait exactement la même chose mais en plus simple.
        -n
        On imprime à l'écran que ce qu'on demande, notamment grâce aux flags p ou P
        N
        Pour chaque ligne rencontrée on ajoute la ligne suivante
        P
        On imprime sur la sortie standard tout ce qui précède le caractère fin de ligne
        d
        On supprime tout ce qui se trouve dans l'espace de travail et on recommence.
        1