recherche d'outils

Le
François Patte
Bonjour,

Ceci n'est pas à proprement parler de la configuration linux, mais je
cherche un moyen de couper un fichier texte avec des outils fonctionnant
sous linux.

Soit un texte long dans lequel je peux mettre des "balises", est-il
possible de récupérer dans des fichiers séparés le texte situé entre
deux balises de la manière suivante:

<début> titre1

blabla1 .
..
blabla1 .
..

<fin>

<début> titre2

blabla2
..

<fin>

le script mettrait le texte situé entre <début> et <fin> dans un fichier
ayant pour nom le titre correspondant à la balise de début:

blabla1 .
..
blabla1 .
..
dans le fichier titre1.txt


blabla2
..
dans le fichier titre2.txt

etc.

Merci pour toute aide.
--
François Patte
Université Paris Descartes
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Doug713705
Le #26394675
Le 05-04-2016, François Patte nous expliquait dans
fr.comp.os.linux.configuration (
Bonjour,

Ceci n'est pas à proprement parler de la configuration linux, mais je
cherche un moyen de couper un fichier texte avec des outils fonctionnant
sous linux....

Soit un texte long dans lequel je peux mettre des "balises", est-il
possible de récupérer dans des fichiers séparés le texte situé entre
deux balises de la manière suivante:

<début> titre1

blabla1 ....
.....
blabla1 ....
.....

<fin>

<début> titre2

blabla2 ...
.....

<fin>



L'outil que tu cherches s'appelle awk.

--
Le ciel est bleu, le jour est J.
La bombe est H mais mon grand-père s'ennuie
Comme un chien dans un cimetière le quatorze juillet.
-- H.F. Thiéfaine, Comme un chien dans un cimetière
Philippe Weill
Le #26394674
Le 05/04/2016 12:47, Doug713705 a écrit :
Le 05-04-2016, François Patte nous expliquait dans
fr.comp.os.linux.configuration (
Bonjour,

Ceci n'est pas à proprement parler de la configuration linux, mais je
cherche un moyen de couper un fichier texte avec des outils fonctionnant
sous linux....

Soit un texte long dans lequel je peux mettre des "balises", est-il
possible de récupérer dans des fichiers séparés le texte situé entre
deux balises de la manière suivante:

<début> titre1

blabla1 ....
.....
blabla1 ....
.....

<fin>

<début> titre2

blabla2 ...
.....

<fin>



L'outil que tu cherches s'appelle awk.





une base comme cela

awk '/^<deb/{n=n+1}{ print > n".txt"}' foo.txt

il ne te resterait plus qu'a virer les balises (grep -v)
Benoit Izac
Le #26394713
Bonjour,

Le 05/04/2016 à 11:54, François Patte a écrit dans le message

Ceci n'est pas à proprement parler de la configuration linux, mais je
cherche un moyen de couper un fichier texte avec des outils fonctionnant
sous linux....

Soit un texte long dans lequel je peux mettre des "balises", est-il
possible de récupérer dans des fichiers séparés le texte situé entre
deux balises de la manière suivante:

<début> titre1

blabla1 ....
.....
blabla1 ....
.....

<fin>

<début> titre2

blabla2 ...
.....

<fin>

le script mettrait le texte situé entre <début> et <fin> dans un fichier
ayant pour nom le titre correspondant à la balise de début:

blabla1 ....
.....
blabla1 ....
.....
dans le fichier titre1.txt


blabla2 ...
.....
dans le fichier titre2.txt

etc.



% cat cut.pl
#!/usr/bin/perl
use strict;
use warnings;

my $fh;

for (<>) {
if (/<début> (w+)/) {
open($fh, ">", "$1.txt") or die "can't open $1.txt: $!";
} elsif (/<fin>/) {
close($fh);
} elsif (fileno($fh)) {
print($fh $_);
}
}
% perl cut.pl < in.txt
% cat titre1.txt

blabla1 ....
.....
blabla1 ....
.....

% cat titre2.txt

blabla2 ...
.....

%

--
Benoit Izac
Lucas Levrel
Le #26394772
Le 5 avril 2016, François Patte a écrit :

Ceci n'est pas à proprement parler de la configuration linux, mais je
cherche un moyen de couper un fichier texte avec des outils fonctionnant
sous linux....



gcc ? :-)

Soit un texte long dans lequel je peux mettre des "balises", est-il
possible de récupérer dans des fichiers séparés le texte situé entre
deux balises de la manière suivante:


(...)

awk '{if($1==" else if(fichier != "") print > fichier}' input.txt

Si le titre après <début> contient des espaces, seul le premier mot sera
utilisé pour nommer le fichier. Ça doit pouvoir se corriger, mais as-tu
prévu d'éviter les noms de fichier avec espaces ?


--
LL
Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
C'est mieux avé les accents (F. Patte)
François Patte
Le #26394784
Le 06/04/2016 14:33, Lucas Levrel a écrit :
Le 5 avril 2016, François Patte a écrit :

Ceci n'est pas à proprement parler de la configuration linux, mais je
cherche un moyen de couper un fichier texte avec des outils fonctionnant
sous linux....



gcc ? :-)



J'ignore tout du C...!


Soit un texte long dans lequel je peux mettre des "balises", est-il
possible de récupérer dans des fichiers séparés le texte situé entre
deux balises de la manière suivante:


(...)

awk '{if($1==" fichier=""; else if(fichier != "") print > fichier}' input.txt

Si le titre après <début> contient des espaces, seul le premier mot sera
utilisé pour nommer le fichier. Ça doit pouvoir se corriger, mais as-tu
prévu d'éviter les noms de fichier avec espaces ?



Merci pour cette réponse, je vais arriver à bricoler....

Oui, mes noms de fichiers sont sans espaces, discipline unix depuis la
nuit des temps!


--
François Patte
Université Paris Descartes
Publicité
Poster une réponse
Anonyme