Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

cygwin suppression partielle de ligne

5 réponses
Avatar
nanou45
Bonjour,

j'espère être dans la bonne sous-catégorie pour poser ma question. désolée par avance si ce n'est pas le cas.

je travaille sous cygwin, je suis sur une bibliographie que j'aimerais classer chronologiquement par ordre de parution.
Pour se faire il me suffira d'utiliser la fonction sort, mais avant ça il faut que toutes mes lignes commencent par les dates.
Or ce n'est pas le cas, pour l'instant elles commencent par les noms d'auteur.

j'ai donc essayé de supprimer le début de la ligne sauf les dates en faisant :
$ sed '/[a-z][^[12][0-9][0-9][0-9]]/!d' fichier.txt

malheureusement cette expression me supprime toutes mes lignes ainsi que mes dates :-(
Pouvez-vous m'éclairer, m'aiguiller ?

Merci par avance.

5 réponses

Avatar
Fabien LE LEZ
On Fri, 17 Apr 2009 13:40:32 -0500, nanou45 :

Or ce n'est pas le cas, pour l'instant elles commencent par les noms d'auteur.



À vue de nez, l'outil adapté est awk. Mais sans connaître le format
précis de tes lignes, c'est difficile d'en savoir plus...
Avatar
Benoit Izac
Bonjour,

le 17/04/2009 à 20:40, nanou a écrit dans le message
:

j'espère être dans la bonne sous-catégorie pour poser ma question.
désolée par avance si ce n'est pas le cas.



Plutôt fr.comp.os.unix.

je travaille sous cygwin, je suis sur une bibliographie que j'aimerais
classer chronologiquement par ordre de parution. Pour se faire il me
suffira d'utiliser la fonction sort, mais avant ça il faut que toutes
mes lignes commencent par les dates. Or ce n'est pas le cas, pour
l'instant elles commencent par les noms d'auteur.



man sort, regarde les options « -t » et « -k » (peut-être aussi « -n »).
Sans connaître le format de tes lignes, difficile de t'en dire plus.

j'ai donc essayé de supprimer le début de la ligne sauf les dates en
faisant :
$ sed '/[a-z][^[12][0-9][0-9][0-9]]/!d' fichier.txt



Je ne suis pas sûr que ça fasse ce que tu penses ; cette commande fait
afficher (ne pas supprimer en fait mais c'est équivalent ici) toutes les
lignes de « fichier.txt » qui comportent :
- une lettre minuscule (ASCII)
- suivie d'un caractère qui n'est pas « [ », « 1 » ou « 2 »
- suivi d'un chiffre décimal
- suivi d'un chiffre décimal
- suivi d'un chiffre décimal
- suivi d'un « ] »

Ce qui n'a pas vraiment de sens.

--
Benoit Izac
Avatar
nanou45
Fabien LE LEZ a écrit le 17/04/2009 à 21h02 :
On Fri, 17 Apr 2009 13:40:32 -0500, nanou45 :

Or ce n'est pas le cas, pour l'instant elles commencent par les noms d'auteur.




À vue de nez, l'outil adapté est awk. Mais sans connaître
le format
précis de tes lignes, c'est difficile d'en savoir plus...


Ibrahim, Amr H. <date>1996</date>La forme d'une théorie du langage axée sur les termes supports.
Leclère, C. <date>1990</date>Organisation du lexique-grammaire des verbes français. Langue Française,

Voici deux lignes de ma bibliographie. comme tu vois j'ai déjà balisé mes dates pour une meilleure visibilité.
ce que j'aimerais c'est pouvoir supprimer le nom qui précède la date, comme ça la date se retrouve en début de ligne. Mais du coup je ne sais pas comment on peut supprimer qu'une partie de ligne.
Avatar
Alain Montfranc
nanou45 a écrit
Fabien LE LEZ a écrit le 17/04/2009 à 21h02 :
On Fri, 17 Apr 2009 13:40:32 -0500, nanou45 :

Or ce n'est pas le cas, pour l'instant elles commencent par les noms
d'auteur.




À vue de nez, l'outil adapté est awk. Mais sans connaître
le format
précis de tes lignes, c'est difficile d'en savoir plus...


Ibrahim, Amr H. <date>1996</date>La forme d'une théorie du langage axée sur
les termes supports.
Leclère, C. <date>1990</date>Organisation du lexique-grammaire des verbes
français. Langue Française,

Voici deux lignes de ma bibliographie. comme tu vois j'ai déjà balisé mes
dates pour une meilleure visibilité.
ce que j'aimerais c'est pouvoir supprimer le nom qui précède la date, comme
ça la date se retrouve en début de ligne. Mais du coup je ne sais pas comment
on peut supprimer qu'une partie de ligne.


sed 's?(.*)(<date>[0-9]*</date>)(.*)?2 1 3?' < biblio >
biblio.new
Avatar
Benoit Izac
Bonjour,

le 17/04/2009 à 22:18, nanou a écrit dans le message
:

précis de tes lignes, c'est difficile d'en savoir plus...





Ibrahim, Amr H. <date>1996</date>La forme d'une théorie du langage
axée sur les termes supports. Leclère, C.



<date>1990</date>Organisation du lexique-grammaire des verbes
français. Langue Française,



Si les dates comportent toujours quatre chiffres et que tu n'as pas
d'autres « > » avant celui de « <date> » :

sort -t > -k 2 fichier.txt

--
Benoit Izac