Decouper un fichier avec des "motifs"
Résolu/Fermé
Poireau007
Messages postés
83
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
17 octobre 2012
-
17 oct. 2012 à 17:10
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 30 oct. 2012 à 08:20
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 30 oct. 2012 à 08:20
A voir également:
- Decouper un fichier avec des "motifs"
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment découper un pdf - Guide
- Ouvrir un fichier .bin - Guide
3 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
17 oct. 2012 à 17:26
17 oct. 2012 à 17:26
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 $
Poireau007
Messages postés
83
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
17 octobre 2012
15
17 oct. 2012 à 17:42
17 oct. 2012 à 17:42
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
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
17 oct. 2012 à 17:47
17 oct. 2012 à 17:47
Sinon pour executer le shell chez moi je fais plutôt : sh foo.sh
C'est un lien symbolique sh ?
Sinon, essaye avec :
C'est un lien symbolique sh ?
Sinon, essaye avec :
done < $(sed -n '/<h1>/ s/<[^>]*>//gp' plop.txt)
Poireau007
Messages postés
83
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
17 octobre 2012
15
17 oct. 2012 à 18:57
17 oct. 2012 à 18:57
sh + blabla.sh : ça permet d'executer un sh dans le dossier en cours.
Avec ta modif il me dit :
:(
le "<" c'est pour sortir le document ?
Avec ta modif il me dit :
foo.sh: line 6: Mon titre 1 Mon titre 2 Mon titre 3: No such file or directory
:(
le "<" c'est pour sortir le document ?
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
17 oct. 2012 à 19:12
17 oct. 2012 à 19:12
Modifie le script comme ça :
Par contre rends ton script exécutable :
et lance-le comme suit :
#! /bin/bash sed -n '/<h1>/ s/<[^>]*>//gp' plop | while read line do sed -n '/'"${line}"'/,/^$/w '"${line// /_}"'' plop done
Par contre rends ton script exécutable :
chmod u+x foo.sh
et lance-le comme suit :
./foo.sh
Poireau007
Messages postés
83
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
17 octobre 2012
15
17 oct. 2012 à 19:18
17 oct. 2012 à 19:18
Ca marche ! Merci !!
Ok pour le chmod ça marche aussi.
Pour comprendre ça change quoi de faire comme ça ?
Ok pour le chmod ça marche aussi.
Pour comprendre ça change quoi de faire comme ça ?
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
17 oct. 2012 à 19:20
17 oct. 2012 à 19:20
C'est surtout que le shebang (#! /bin/bash) est interprété de cette façon, sans quoi c'est "/bin/sh" qui interprète le script ;-\
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
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
30 oct. 2012 à 08:20
30 oct. 2012 à 08:20
Salut,
Merci d'ouvrir un nouveau post en expliquant au mieux ton problème et surtout en donnant un exemple concret AVANT => APRÈS de ce que tu attends.
Merci d'ouvrir un nouveau post en expliquant au mieux ton problème et surtout en donnant un exemple concret AVANT => APRÈS de ce que tu attends.