Shell : afficher la ligne précédant un motif

Résolu/Fermé
ging42 - 29 juil. 2010 à 14:42
 ging42 - 30 juil. 2010 à 14:44
Bonjour,
Je souhaiterais afficher la ligne précédant celle où un motif donné a été trouvé, j'ai cherché sur internet et c'est possible avec sed :
sed -n '/motif/{g;1!p;};h' file.txt
Oui mais voilà, ça ne marche pas chez moi, ça affiche des lignes vides.
Par contre sed -n '/motif/{n;p;}' file.txt m'affiche bien la ligne située après le motif...
Que faire ?
Merci d'avance pour vos réponses.

A voir également:

6 réponses

Halala,
Il faudrait faire un forum spécial pour jipicy ;)
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
30 juil. 2010 à 12:40
hello
ça fonctionne
$ cat a4
aaa
bbb
ccc
ddd
eee
$ sed -n '/ccc/{g;1!p;};h' a4
bbb
$ 
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
30 juil. 2010 à 13:32
Salut,

Il faudrait faire un forum spécial pour jipicy ;)
En ce cas il devra être payer, et il n'aura plus le droit de dormir ;-DDD
0
Bon j'ai créé le même fichier que toi, et bien non ça n'affiche qu'une ligne vide... C'est pas grave j'ai trouvé un moyen de contourner ce problème.

Merci quand même !
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
30 juil. 2010 à 14:18
qu'affiche sed --version
chez moi: GNU sed version 4.2.1
0
Chez moi ça affiche "Illegal option"... :(
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
30 juil. 2010 à 14:27
sur quel système ?
et sed -v ?
0
Pour sed-v, c'est aussi une option illégale.
C'est un systmèe AIX.
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
30 juil. 2010 à 14:35
c'est donc un "vieux" sed
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 30/07/2010 à 14:42
ou ceci qui doit fonctionner avec le plus archaique des awk
$ awk '{n[NR]=$0} ; /ddd/ {print n[NR-1];exit}' a4 
ccc 
$
0
Whaou merci beaucoup, effectivement ça marche !!! :)
0