Menu

Afficher une ligne sur deux [Résolu/Fermé]

Messages postés
120
Date d'inscription
samedi 1 mars 2008
Statut
Membre
Dernière intervention
18 août 2010
- - Dernière réponse : zipe31
Messages postés
36583
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
23 juin 2019
- 3 sept. 2015 à 13:49
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*************
Afficher la suite 

1 réponse

Messages postés
43477
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
17 mars 2018
4507
0
Merci
Salut,
sed -n 1~2p
Sabetodo
Messages postés
120
Date d'inscription
samedi 1 mars 2008
Statut
Membre
Dernière intervention
18 août 2010
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.
jipicy
Messages postés
43477
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
17 mars 2018
4507 > Sabetodo
Messages postés
120
Date d'inscription
samedi 1 mars 2008
Statut
Membre
Dernière intervention
18 août 2010
-
Alors essaie comme ça :
sed '1n;N;s/.*\n//'
;-))
Sabetodo
Messages postés
120
Date d'inscription
samedi 1 mars 2008
Statut
Membre
Dernière intervention
18 août 2010
3 > jipicy
Messages postés
43477
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
17 mars 2018
-
merci beaucoup jipicy, je viens de tester ce que tu m'a propose et ca marche tout a fait. Bonne journee.
> Sabetodo
Messages postés
120
Date d'inscription
samedi 1 mars 2008
Statut
Membre
Dernière intervention
18 août 2010
-
Bonjour, quelqu'un pourrais m'aider a decortiquer cette expression reguliere afin de la comprendre ?
zipe31
Messages postés
36583
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
23 juin 2019
3626 > 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.