J'ai un fichier contenant des groupes de lignes, les groupes
étant séparés entre eux par une ligne vide.
Voici un exemple:
fichier1
fichier2
fichier3
fichier4
fichier23
fichier12
fichier442
fichier388
fichier543
Comment faire en bash pour ne retenir que la première ligne
de chaque groupe de lignes.
Dans mon exemple celà donnerait:
fichier1
fichier4
fichier12
Merci
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs
"From" et
"Reply-To:"
To UNSUBSCRIBE, email to
debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact
listmaster@lists.debian.org
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
salut,
en zsh :
while { old=$line && read line } {
[[ -z $old ]] && print $line
} < fichier
en bash :
while old=$line && read line; do
test -z $old && echo $line
done < fichier
par contre : si ton fichier est gros, il vaut mieux utiliser awk :
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Bayrouni
Merci à vous tous, En plus d'avoir trouvé la solution grâce à vous, et comme c'est quasiment tout le temps avec GNU/Linux, il y a plusieurs manières de procéder. Donc pour moi, ce sont des solutions et des enrichissements.
J'ai déjà regarder la soltion avec cat, grep et tr.
Idem avec la boucle while (astucieuse).
Je vais regarder la soltion awk ce soir (un peu de lecture awk pour rafraichir mes légères connaissances en awk).
Pour la solution perl, certes c'est un langage puissant mais je ne le connais pas du tout (je aurais cependant pris cette solution s'il n'y avait que ça. meme si juste pour l'appliquer :).
GNU/Linux satisfait tout le monde et ce n'est que la pointe de l'iceberg ici :)
Que demander de plus :)
Encore une fois Merci à tous sans exception.
-- Bayrouni
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Merci à vous tous,
En plus d'avoir trouvé la solution grâce à vous, et comme
c'est quasiment tout le temps avec GNU/Linux, il y a
plusieurs manières de procéder. Donc pour moi, ce sont des
solutions et des enrichissements.
J'ai déjà regarder la soltion avec cat, grep et tr.
Idem avec la boucle while (astucieuse).
Je vais regarder la soltion awk ce soir (un peu de lecture
awk pour rafraichir mes légères connaissances en awk).
Pour la solution perl, certes c'est un langage puissant mais
je ne le connais pas du tout (je aurais cependant pris
cette solution s'il n'y avait que ça. meme si juste pour
l'appliquer :).
GNU/Linux satisfait tout le monde et ce n'est que la pointe
de l'iceberg ici :)
Que demander de plus :)
Encore une fois Merci à tous sans exception.
--
Bayrouni
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Merci à vous tous, En plus d'avoir trouvé la solution grâce à vous, et comme c'est quasiment tout le temps avec GNU/Linux, il y a plusieurs manières de procéder. Donc pour moi, ce sont des solutions et des enrichissements.
J'ai déjà regarder la soltion avec cat, grep et tr.
Idem avec la boucle while (astucieuse).
Je vais regarder la soltion awk ce soir (un peu de lecture awk pour rafraichir mes légères connaissances en awk).
Pour la solution perl, certes c'est un langage puissant mais je ne le connais pas du tout (je aurais cependant pris cette solution s'il n'y avait que ça. meme si juste pour l'appliquer :).
GNU/Linux satisfait tout le monde et ce n'est que la pointe de l'iceberg ici :)
Que demander de plus :)
Encore une fois Merci à tous sans exception.
-- Bayrouni
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Gilles MISSONNIER
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools.
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Marc Chantreux
Gilles MISSONNIER wrote:
ça marche pô, car il affiche des lignes vides si il y a + de 2 lignes vides qui se suivent...
la réponse est dans la question :)
while old=$line && read line; do test -z $old && test -n $line && echo $line done < fichier
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Gilles MISSONNIER wrote:
ça marche pô, car il affiche des lignes vides si il y a + de 2 lignes
vides qui se suivent...
la réponse est dans la question :)
while old=$line && read line; do
test -z $old && test -n $line && echo $line
done < fichier
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Marc Chantreux
> sed -ne '/./{p;:a;n;/./ba}' <fichier
joli ! il y a donc des choses a faire avec sed ! :)
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
> sed -ne '/./{p;:a;n;/./ba}' <fichier
joli ! il y a donc des choses a faire avec sed ! :)
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
joli ! il y a donc des choses a faire avec sed ! :)
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Jacques L'helgoualc'h
Bayrouni a écrit, jeudi 29 juin 2006, à 13:37 : [...]
Que demander de plus :)
Une solution Sed, bien sûr :)
sed -ne '/./{p;:a;n;/./ba}' <fichier
sed -ne '/./{ # si une ligne est non-vide p # on écrit :a n # puis on avale les non-vides suivantes en boucle... /./ba }'
-- Jacques L'helgoualc'h
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Bayrouni a écrit, jeudi 29 juin 2006, à 13:37 :
[...]
Que demander de plus :)
Une solution Sed, bien sûr :)
sed -ne '/./{p;:a;n;/./ba}' <fichier
sed -ne '/./{ # si une ligne est non-vide
p # on écrit
:a
n # puis on avale les non-vides suivantes en boucle...
/./ba
}'
--
Jacques L'helgoualc'h
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Bayrouni a écrit, jeudi 29 juin 2006, à 13:37 : [...]
Que demander de plus :)
Une solution Sed, bien sûr :)
sed -ne '/./{p;:a;n;/./ba}' <fichier
sed -ne '/./{ # si une ligne est non-vide p # on écrit :a n # puis on avale les non-vides suivantes en boucle... /./ba }'
-- Jacques L'helgoualc'h
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Bayrouni
Marc Chantreux a écrit :
sed -ne '/./{p;:a;n;/./ba}' <fichier
joli ! il y a donc des choses a faire avec sed ! :)
J'ai essayé toutes les propositions, et comme mon fichier est effectivement voluminueux j'ai adopté celle-là: awk ' { if ( old=="") { print }; old=$0 }' <fichier
Mais je suis intrigué par la solution sed que je m'efforcerai à decrypter :) Je suis sur une doc à cette adresse: http://www.gnu.org/software/sed/manual/html_mono/sed.html
Mais peut-être que quelques phrases en français accompagnant cette jolie ligne sed auraient facilité la tâche?
En tout cas je continue ma lecture.
Et Merci pour la belle ligne :)
A +
-- Bayrouni
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Marc Chantreux a écrit :
sed -ne '/./{p;:a;n;/./ba}' <fichier
joli ! il y a donc des choses a faire avec sed ! :)
J'ai essayé toutes les propositions, et comme mon fichier
est effectivement voluminueux j'ai adopté celle-là:
awk ' { if ( old=="") { print }; old=$0 }' <fichier
Mais je suis intrigué par la solution sed que je
m'efforcerai à decrypter :)
Je suis sur une doc à cette adresse:
http://www.gnu.org/software/sed/manual/html_mono/sed.html
Mais peut-être que quelques phrases en français accompagnant
cette jolie ligne sed auraient facilité la tâche?
En tout cas je continue ma lecture.
Et Merci pour la belle ligne :)
A +
--
Bayrouni
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
joli ! il y a donc des choses a faire avec sed ! :)
J'ai essayé toutes les propositions, et comme mon fichier est effectivement voluminueux j'ai adopté celle-là: awk ' { if ( old=="") { print }; old=$0 }' <fichier
Mais je suis intrigué par la solution sed que je m'efforcerai à decrypter :) Je suis sur une doc à cette adresse: http://www.gnu.org/software/sed/manual/html_mono/sed.html
Mais peut-être que quelques phrases en français accompagnant cette jolie ligne sed auraient facilité la tâche?
En tout cas je continue ma lecture.
Et Merci pour la belle ligne :)
A +
-- Bayrouni
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Jacques L'helgoualc'h
Bayrouni a écrit, lundi 3 juillet 2006, à 17:29 : [...]
Mais je suis intrigué par la solution sed que je m'efforcerai à decrypter :) Je suis sur une doc à cette adresse: http://www.gnu.org/software/sed/manual/html_mono/sed.html
Il y a aussi http://sed.sf.net/, avec beaucoup d'exemples.
Mais peut-être que quelques phrases en français accompagnant cette jolie ligne sed auraient facilité la tâche?
Il y en avait un peu :
sed -ne '/./{ # si une ligne est non-vide
début de bloc
p # on écrit :a
étiquette de retour
n # puis on avale les non-vides suivantes en boucle... /./ba
goto a (si la nouvelle ligne contient aussi quelque chose)
}'
Et Merci pour la belle ligne :)
C'était simple ! Il faut reconnaître que Awk est plus lisible.
PS. Pour les performances, on a déjà signalé que Perl était plus performant sur les (très) gros fichiers. -- Jacques L'helgoualc'h
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Bayrouni a écrit, lundi 3 juillet 2006, à 17:29 :
[...]
Mais je suis intrigué par la solution sed que je
m'efforcerai à decrypter :)
Je suis sur une doc à cette adresse:
http://www.gnu.org/software/sed/manual/html_mono/sed.html
Il y a aussi http://sed.sf.net/, avec beaucoup d'exemples.
Mais peut-être que quelques phrases en français accompagnant
cette jolie ligne sed auraient facilité la tâche?
Il y en avait un peu :
sed -ne '/./{ # si une ligne est non-vide
début de bloc
p # on écrit
:a
étiquette de retour
n # puis on avale les non-vides suivantes en boucle...
/./ba
goto a (si la nouvelle ligne contient aussi quelque chose)
}'
Et Merci pour la belle ligne :)
C'était simple ! Il faut reconnaître que Awk est plus lisible.
PS. Pour les performances, on a déjà signalé que Perl était plus
performant sur les (très) gros fichiers.
--
Jacques L'helgoualc'h
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Bayrouni a écrit, lundi 3 juillet 2006, à 17:29 : [...]
Mais je suis intrigué par la solution sed que je m'efforcerai à decrypter :) Je suis sur une doc à cette adresse: http://www.gnu.org/software/sed/manual/html_mono/sed.html
Il y a aussi http://sed.sf.net/, avec beaucoup d'exemples.
Mais peut-être que quelques phrases en français accompagnant cette jolie ligne sed auraient facilité la tâche?
Il y en avait un peu :
sed -ne '/./{ # si une ligne est non-vide
début de bloc
p # on écrit :a
étiquette de retour
n # puis on avale les non-vides suivantes en boucle... /./ba
goto a (si la nouvelle ligne contient aussi quelque chose)
}'
Et Merci pour la belle ligne :)
C'était simple ! Il faut reconnaître que Awk est plus lisible.
PS. Pour les performances, on a déjà signalé que Perl était plus performant sur les (très) gros fichiers. -- Jacques L'helgoualc'h
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Bayrouni
Jacques L'helgoualc'h a écrit :
C'était simple ! Il faut reconnaître que Awk est plus lisible.
Oui, je le reconnais, awk était plus lisible, mais après initiation on voit plus clair en général.
J'ai lu un peu de sed dans les generalités et dans le contexte de ma question, et je comprends maintenant bien tes commentaires sed :)
GNU/Linux/Debian/ c'est LE MONDE PERDU, donc à decouvrir, si je peux me permettre d'emettre une suggestion.
Cordialement.
-- Bayrouni
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Jacques L'helgoualc'h a écrit :
C'était simple ! Il faut reconnaître que Awk est plus lisible.
Oui, je le reconnais, awk était plus lisible, mais après
initiation on voit plus clair en général.
J'ai lu un peu de sed dans les generalités et dans le
contexte de ma question, et je comprends maintenant bien tes
commentaires sed :)
GNU/Linux/Debian/ c'est LE MONDE PERDU, donc à decouvrir,
si je peux me permettre d'emettre une suggestion.
Cordialement.
--
Bayrouni
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
C'était simple ! Il faut reconnaître que Awk est plus lisible.
Oui, je le reconnais, awk était plus lisible, mais après initiation on voit plus clair en général.
J'ai lu un peu de sed dans les generalités et dans le contexte de ma question, et je comprends maintenant bien tes commentaires sed :)
GNU/Linux/Debian/ c'est LE MONDE PERDU, donc à decouvrir, si je peux me permettre d'emettre une suggestion.
Cordialement.
-- Bayrouni
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact