Decouper un fichier avec des "motifs"
Résolu
Poireau007
Messages postés
83
Date d'inscription
Statut
Membre
Dernière intervention
-
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour tout le monde,
Je souhaiterais :
1/ ouvrir un fichier
2/ le découper
3/ enregistrer les fichiers découpés avec le bon nom
Exemple de fichier source :
1/ Ouvrir le fichier : je fais un cat fichier ...
2/ Le découper de "<h1>" jusqu'à la fin du texte : c'est la que je commence à bloquer
je fais perl -0777 -ne 'print "$1\n" while /<h1>(.*?)<h1>(.*?)<h1>/gs' fichier
(fonction trouvée sur internet que je ne comprend pas trop...)
Je récupére une partie de mes article mais pas tous :(
3/Découpage. Je pensais garder mes h1 pour renommer...
par exemple for i in $(grep h1 fichier);do touch $1; done
et ensuite mettre le contenu dedans, mais bon je sais pas si c'est la bonne approche...
Si quelqu'un a des pistes, je suis preneur !
Je souhaiterais :
1/ ouvrir un fichier
2/ le découper
3/ enregistrer les fichiers découpés avec le bon nom
Exemple de fichier source :
<h1>Mon titre 1</h1> <h2>mini titre 1</h2> texte blablablablablabla blablablablablablablabla <h1>Mon titre 2</h1> <h2>mini titre 2</h2> texte blablablablablabla blablablablablablablabla <h1>Mon titre 3</h1> <h2>mini titre 3</h2> texte blablablablablabla blablablablablablablabla
1/ Ouvrir le fichier : je fais un cat fichier ...
2/ Le découper de "<h1>" jusqu'à la fin du texte : c'est la que je commence à bloquer
je fais perl -0777 -ne 'print "$1\n" while /<h1>(.*?)<h1>(.*?)<h1>/gs' fichier
(fonction trouvée sur internet que je ne comprend pas trop...)
Je récupére une partie de mes article mais pas tous :(
3/Découpage. Je pensais garder mes h1 pour renommer...
par exemple for i in $(grep h1 fichier);do touch $1; done
et ensuite mettre le contenu dedans, mais bon je sais pas si c'est la bonne approche...
Si quelqu'un a des pistes, je suis preneur !
A voir également:
- Decouper un fichier avec des "motifs"
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
3 réponses
Salut,
$ ls # Contenu du répertoire foo.sh plop $ cat plop # Contenu du fichier "plop" <h1>Mon titre 1</h1> <h2>mini titre 1</h2> texte blablablablablabla blablablablablablablabla <h1>Mon titre 2</h1> <h2>mini titre 2</h2> texte blablablablablabla blablablablablablablabla <h1>Mon titre 3</h1> <h2>mini titre 3</h2> texte blablablablablabla blablablablablablablabla $ cat foo.sh # Le script "foo.sh" #! /bin/bash while read line do sed -n '/'"${line}"'/,/^$/w '"${line// /_}"'' plop done < <(sed -n '/<h1>/ s/<[^>]*>//gp' plop) $ ./foo.sh # Exécution $ ls # Contenu du répertoire foo.sh Mon_titre_1 Mon_titre_2 Mon_titre_3 plop $ head Mon* # Contenu des fichiers créés ==> Mon_titre_1 <== <h1>Mon titre 1</h1> <h2>mini titre 1</h2> texte blablablablablabla blablablablablablablabla ==> Mon_titre_2 <== <h1>Mon titre 2</h1> <h2>mini titre 2</h2> texte blablablablablabla blablablablablablablabla ==> Mon_titre_3 <== <h1>Mon titre 3</h1> <h2>mini titre 3</h2> texte blablablablablabla blablablablablablablabla $
Salut Zipe31,
merci pour ta réponse
quand j'execute ta commande, j'ai ce message :
j'ai essayer de retirer l'espace entre les "<" mais c'est pas ça
Sinon pour executer le shell chez moi je fais plutôt :
sh foo.sh
car je suis sous mac
merci pour ta réponse
quand j'execute ta commande, j'ai ce message :
foo.sh: line 6: syntax error near unexpected token '<' foo.sh: line 6: 'done < <(sed -n '/<h1>/ s/<[^>]*>//gp' plop.txt)'
j'ai essayer de retirer l'espace entre les "<" mais c'est pas ça
Sinon pour executer le shell chez moi je fais plutôt :
sh foo.sh
car je suis sous mac
Bonjour à vous,
J'essaye de m'inspirer sans trop se succès de cette solution pour découper un énorme fichier (dump de postgresql) à chaque occurence du mot COPY en début de ligne.
J'ai changé les /<H1>/ en /COPY/ mais je dois avouer ne pas comprendre vraiment la syntaxe.
Merci par avance, surtout à Zipe31 si vous pouvez m'aider.
Salutations
J'essaye de m'inspirer sans trop se succès de cette solution pour découper un énorme fichier (dump de postgresql) à chaque occurence du mot COPY en début de ligne.
J'ai changé les /<H1>/ en /COPY/ mais je dois avouer ne pas comprendre vraiment la syntaxe.
Merci par avance, surtout à Zipe31 si vous pouvez m'aider.
Salutations