Supprimer tout ce qui précéde un pattern de caractères ?
Résolu/Fermé
Swiss Knight
Messages postés
1956
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
27 juillet 2016
-
13 avril 2013 à 20:17
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 - 18 avril 2013 à 13:13
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 - 18 avril 2013 à 13:13
A voir également:
- Supprimer tout ce qui précéde un pattern de caractères ?
- Caractères ascii - Guide
- Supprimer une page word - Guide
- Impossible de supprimer un fichier - Guide
- Supprimer compte instagram - Guide
- Caractères spéciaux clavier azerty - Guide
2 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
13 avril 2013 à 20:21
13 avril 2013 à 20:21
Salut,
$ cat plop monsieur-durandXXXJean-dupond directeur madame-joséphineXXXarlette jeane assistance de direction $ sed 's/.*XXX//' plop Jean-dupond directeur arlette jeane assistance de direction $
Swiss Knight
Messages postés
1956
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
27 juillet 2016
110
Modifié par Swiss Knight le 14/04/2013 à 11:34
Modifié par Swiss Knight le 14/04/2013 à 11:34
Merci zipe31 :)
je ne sais pas pourquoi je vais toujours chercher si loin parfois.
Par contre je n'arrive pas à supprimer les lignes vides de mon fichier avec :
sed -i '/^$/d' mon_fichier.txt
Il doit y avoir une subtilité quelque part... :S
EDIT :
je souhaiterais ensuite pouvoir remplacer tous les sauts de lignes impairs par une virugle+espace (pour mettre les titres des gens en face de leurs noms.
Peut-être avec awk ? Ceci permettant d'afficher que les lignes impaires :
awk 'NR % 2 == 1' mon_fichier.txt
je pensais partir de ça, mais il y a peut-être plus court/simple...
Merci !
"Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement." -A. Einsten-
je ne sais pas pourquoi je vais toujours chercher si loin parfois.
Par contre je n'arrive pas à supprimer les lignes vides de mon fichier avec :
sed -i '/^$/d' mon_fichier.txt
Il doit y avoir une subtilité quelque part... :S
EDIT :
je souhaiterais ensuite pouvoir remplacer tous les sauts de lignes impairs par une virugle+espace (pour mettre les titres des gens en face de leurs noms.
Peut-être avec awk ? Ceci permettant d'afficher que les lignes impaires :
awk 'NR % 2 == 1' mon_fichier.txt
je pensais partir de ça, mais il y a peut-être plus court/simple...
Merci !
"Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement." -A. Einsten-
Swiss Knight
Messages postés
1956
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
27 juillet 2016
110
14 avril 2013 à 11:21
14 avril 2013 à 11:21
Remarque : bon comme les lignes vides n'apparaissaient que sur une ligne sur trois, j'ai pu faire un :
sed -i '0~3d' mon_fichier.txt
mais je souhaite quand même comprendre ce qui je joue pas avec la suppression des lignes vides...
sed -i '0~3d' mon_fichier.txt
mais je souhaite quand même comprendre ce qui je joue pas avec la suppression des lignes vides...
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
14 avril 2013 à 14:03
14 avril 2013 à 14:03
Par contre je n'arrive pas à supprimer les lignes vides de mon fichier avec : sed -i '/^$/d' mon_fichier.txt
Il doit y avoir une subtilité quelque part... :S
Simplement parce que ta ligne vide ne doit pas être totalement vide, il se peut qu'il y ait des caractères non-imprimables ;-\
Pour le savoir :
je souhaiterais ensuite pouvoir remplacer tous les sauts de lignes impairs par une virugle+espace (pour mettre les titres des gens en face de leurs noms.
Il doit y avoir une subtilité quelque part... :S
Simplement parce que ta ligne vide ne doit pas être totalement vide, il se peut qu'il y ait des caractères non-imprimables ;-\
Pour le savoir :
cat -A ton_fichier ou sed -n l ton_fichier
je souhaiterais ensuite pouvoir remplacer tous les sauts de lignes impairs par une virugle+espace (pour mettre les titres des gens en face de leurs noms.
$ cat plop monsieur-durandXXXJean-dupond directeur madame-joséphineXXXarlette jeane assistance de direction $ sed 'N;s/.*XXX//;s/\n/, /' plop Jean-dupond, directeur arlette jeane, assistance de direction $
Swiss Knight
Messages postés
1956
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
27 juillet 2016
110
Modifié par Swiss Knight le 14/04/2013 à 19:48
Modifié par Swiss Knight le 14/04/2013 à 19:48
Salut et merci de ton aide précieuse encore une fois !
1. Il y a ça lorsque je fais un cat -A, sur la ligne vide : ^M$
2. avec la commande sed j'ai ce message d'erreur : sed: -e expression n°1, caractère 1: commande manquante
la deuxième commande sed, pour remettre les choses en ordre, fonctionne quant à elle presque très bien :
$ cat plop
$ sed 'N;s/.*XXX//;s/\n/, /' plop
Lorsque je disais une ligne sur deux, c'était pour mettre en face de chaque personnage sa fonction, or ici ça rate une personne sur deux. Le hic c'est que je ne comprends pas pourquoi, la commande est compréhensible il me semble. Y a même des virgules qui ne semblent pas s'être affichées.
1. Il y a ça lorsque je fais un cat -A, sur la ligne vide : ^M$
2. avec la commande sed j'ai ce message d'erreur : sed: -e expression n°1, caractère 1: commande manquante
la deuxième commande sed, pour remettre les choses en ordre, fonctionne quant à elle presque très bien :
$ cat plop
jean-unXXXjean jacques assistant du chef paul-deuxXXXjean rené patron dir'gén marie-andréeXXXjeanne d'arlequin assistante domestique manu-joséXXXmanuel oliveira gardien dîmmeuble
$ sed 'N;s/.*XXX//;s/\n/, /' plop
jean jacques, assistant du chef jean rené patron dir'gén, jeanne d'arlequin, assistante domestique manuel oliveira gardien dîmmeuble
Lorsque je disais une ligne sur deux, c'était pour mettre en face de chaque personnage sa fonction, or ici ça rate une personne sur deux. Le hic c'est que je ne comprends pas pourquoi, la commande est compréhensible il me semble. Y a même des virgules qui ne semblent pas s'être affichées.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
14 avril 2013 à 20:38
14 avril 2013 à 20:38
1. Il y a ça lorsque je fais un cat -A, sur la ligne vide : ^M$
C'est que ton fichier provient d'un système Windows. Le "^M" est la marque de fin de ligne spécifique au format Windows ;-(
Il faut au-préalable convertir ton fichier au format Unix à l'aide du programme "dos2unix" (à installer si pas présent).
Tu peux aussi le faire avec "sed", voir la FAQ : Conversion retours chariots DOS (CRLF) / UNIX (LF)
2. avec la commande sed j'ai ce message d'erreur : sed: -e expression n°1, caractère 1: commande manquante
Attention c'est un ELLE minuscule et non pas un UN :
Une fois que tu auras converti ton fichier au format Unix, tu pourras exécuter cette commande :
C'est que ton fichier provient d'un système Windows. Le "^M" est la marque de fin de ligne spécifique au format Windows ;-(
Il faut au-préalable convertir ton fichier au format Unix à l'aide du programme "dos2unix" (à installer si pas présent).
Tu peux aussi le faire avec "sed", voir la FAQ : Conversion retours chariots DOS (CRLF) / UNIX (LF)
2. avec la commande sed j'ai ce message d'erreur : sed: -e expression n°1, caractère 1: commande manquante
Attention c'est un ELLE minuscule et non pas un UN :
sed -n l plop
Une fois que tu auras converti ton fichier au format Unix, tu pourras exécuter cette commande :
$ cat plop monsieur-durandXXXJean-dupond directeur madame-joséphineXXXarlette jeane assistance de direction jean-unXXXjean jacques assistant du chef paul-deuxXXXjean rené patron dir'gén marie-andréeXXXjeanne d'arlequin assistante domestique manu-joséXXXmanuel oliveira gardien dîmmeuble $ sed '/^$/!N;s/.*XXX//;s/\n/, /' plop Jean-dupond, directeur arlette jeane, assistance de direction jean jacques , assistant du chef jean rené , patron dir'gén jeanne d'arlequin , assistante domestique manuel oliveira , gardien dîmmeuble $
Swiss Knight
Messages postés
1956
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
27 juillet 2016
110
16 avril 2013 à 12:11
16 avril 2013 à 12:11
Salut,
alors merci pour ton astuce là, mon fichier était apparemment au format DOS et la commande sed avec un ELLE minuscule me retourne ça sur les lignes vides : \r$
Une fois passé au format UNIX la commande d'après marche bien, mais comme toi ici, j'ai des espaces qui viennent avant la virgule à partir de la troisième ligne. Bon ce n'est pas bien grave mais c'est encore un truc qui me paraît mystérieux :-)
alors merci pour ton astuce là, mon fichier était apparemment au format DOS et la commande sed avec un ELLE minuscule me retourne ça sur les lignes vides : \r$
Une fois passé au format UNIX la commande d'après marche bien, mais comme toi ici, j'ai des espaces qui viennent avant la virgule à partir de la troisième ligne. Bon ce n'est pas bien grave mais c'est encore un truc qui me paraît mystérieux :-)