pas si mal que ça. Au vu des messages que tu as posté ces derniers temps, y a une nette progression déjà :)
Le problème fondamental, c'est que sed travaille ligne par ligne, et là, tu veux faire quelquechose pour lequel il faut travailler sur plusieurs lignes. Forcément, ça va être compliqué ...
en repartant de ton exemple dans un commentaire ci dessus, une proposition en awk : awk 'BEGIN{prev="unset"} /^const\>|^int\>|^temp\>/ {if (prev != $1) print ""; print $0; next} {print}'
attention, cette version ne fonctionne que si tes identifiants (int, const ou autre) sont en début de ligne puisque $1 représente le premier élément de la ligne.
C'est pas le hello world du awk, donc l'opportunité d'apprendre quelques trucs de plus ;)
man awk pour plus de détails, et pose d'autres questions si tu t'en sors pas !
y a tellement de façon d'approcher le problème. Au choix :
- avec awk (pas trop compliqué, mais moyen performant),
- en utilisant l'option -c de grep et une habile combinaison de head et de tail dans tous les sens (p-e pas super efficace, mais ça doit être rigolo à écrire =)
- en encapsulant tes regex dans un langage de script de plus haut nieveau (python, perl, ruby, ...)
l'option -e de sed, c'est pour faire la v2 de ton script ;-)
En fait, plutôt que lancer plusieurs sed avec une regex chacun, tu peux lancer un seul sed avec plusieurs regex. L'option -e permet de faire ça, genre : sed -e regex1 -e regex2 ... -e regexn
Possible que sur certaines plate forme, l'option -e soit obligatoire, même quand il y a une seule regex. Je ne sais plus trop, mais j'ai pris l'habitude de le mettre tout le temps maintenant ...
quelques remarques pour améliorer ton script : for file in [^$prefix]*
do
echo $file
done
fonctionne chez moi ... Bizzare que ça ne passe pas chez toi.
- Tu peux éventuellement utiliser des trucs spécifiques à bash (moins portable donc ) : shopt -s extglob
for file in !($prefix); do
echo $file
done
man bash pour plus de détails
- pour éviter tous les fichiers temporaires, tu peux utiliser l'option -i de sed
- une regex plus simple pour matcher le motif virgule ou virgule + espace est : , \? (soit virgule + espace + point d'interrogation echappé). Ensuite, dans ton motif de substitution, tu n'as plus besoin d'échapper les caractère 's/, \?/, /g' doit suffire. Les motifs \< et \> ne sont pas utiles ici, puisque l'espace et la virgule sont déjà des délimiteurs de mot.
- pour rajouter END à la fin, le mieux, c'est encore : echo $end >> $file
(simple is beautiful ;)
sed -e 's/\/\//#/g' fichier ça doit le faire.
Sinon, on l'oublie souvent (voire on le sait pas), mais on peut utiliser n'importe quel caractère comme séparateur pour sed, genre '~'
du coup, sed -e 's~//~#~g' fichier, ça le fait aussi
ah voui, c'est des 'l' et des 'v' minuscules ... comme ils sont affichés en majuscule à l'écran, je me fait tout le temps avoir quand je l'explique par écrit (mais jamais que je le tape, ouf ;-)
Si je ne dis pas de bétise, l'éditeur de lien fait une seule passe et jette toutes les libs dont il n'a rencontré aucun symbole.
dans ton édition de lien, essaie de mettre tes .o en premier, et les libs ensuite et tiens nous au courant !
sinon, je voulais, comme toi, un portable sans OS. Pas trouvé rue montgallet. Par contre, Surcouf assemble des portables sans OS. C'est pas forcément le meilleur rapport qualité/prix, je peux pas dire, puisque mon critère principal, c'est que je voulais pas de Windows ... :D
en tout cas, avec le prix d'une licence wIndows en moins, ça m'a paru correct :)
oui, on peut aussi faire du grep | grep | grep ...
par contre, le cat ne sert à rien. D'ailleurs, globalement, tout usage de cat dans un script ou dans une succession de commande est probablement inutile :-)
sinon, tu peux aussi demander à grep de lire les motifs à partir d'un fichier.
Je viens de tester, et les options -f et -v sont compatibles.
grep -v 'mot1\|mot2\|mot3' fichier1, ça doit le faire
on ne peut pas passer plusieurs options -v à grep, il faut donc se débrouiller pour construire *la* regex qui gère d'un seul coup tous les motifs que tu veux exclure.
cf l'option -L
$ ls -l
total 4
drwxrwxr-x 2 gab gab 4096 May 11 2007 dir
-rw-rw-r-- 1 gab gab 0 May 11 2007 file
lrwxrwxrwx 1 gab gab 4 May 11 2007 lien_casse -> yapa
lrwxrwxrwx 1 gab gab 4 May 11 2007 lien_dir -> dir/
lrwxrwxrwx 1 gab gab 4 May 11 2007 lien_file -> file
$ ls -L lien_file >/dev/null 2>&1
$ echo $?
0
$ ls -L lien_dir >/dev/null 2>&1
$ echo $?
0
$ ls -L lien_casse >/dev/null 2>&1
$ echo $?
2
perso, j'ai voté Bayrou au premier tout, comme en 2002 d'ailleurs tiens.
Comme il est pas passé au second tour, il faut bien choisir entre les deux qui restent (sauf à s'abstenir ou voter blanc).
Comment choisir entre 2 gens dont je n'ai pas trop écouté les discours (pas de télé, et je lis pas la presse), avec Internet pour seule source d'information (avec toutes les manipulations, tentatives de désinformations et vraies informations confidentielles qui filtrent que ça implique) ?
Bon, j'aime pas trop Royal. En fait, j'aime pas sa voix, ni sa façon de parler. Par contre, je trouve que Sarkozy est un très bon orateur. Et pourtant, j'ai pas du tout un ressenti positif sur Sarkozy. En creusant un peu, c'est pas tant du pur subjectif que ça : l'image que j'ai de Sarkozy s'est construite au fil du temps, par ses paroles, par ses actes.
Sur le fond, Sarkozy n'arrive pas à me convaincre de sa sincérité. Rien à faire.
Quand je l'entend parler de renforcer les pouvoirs du Parlement, je repense à DADVSI et à l'urgence qui a empéché la seconde lecture, aux interventions téléguidées (Wauquiez et compagnie) pour défendre les intérêts de maisons de disques.
Autre point, comme l'explique Maitre Eolas dans un de ses billets (http://maitre-eolas.fr/2007/04/03/592(...) ), il est dangereux que le législateur supprime toute liberté d'aménagement de peine au juge. De ce que j'en ai entendu (et ça doit pas être bien compliqué à vérifier), les lois votées ces derniers temps sont plutôt explicitement répressives, ôtant aux juges des possibilités d'aménagement (alors que c'est le fondement de leur rôle. Si la loi décide de tout, plus besoin de juges ...).
Complètement rien à voir, Bouygues a des vues sur Areva (c'est pas un scoop, demandez à Google). Pour l'instant, Areva est sous le contrôle de l'état. Comme Bouygues et Sarkozy sont super potes, la probabilité que l'état sorte du capital d'Areva au profit de Bouygues est environ 1. Ca explique aussi la position aussi pro nucléaire du candidat UMP dans le débat d'hier soir il me semble. L'énergie, pour moi, ça fait partie des infrastructures, et il me parait logique que l'état (ou l'Europe, 'fin un truc politique tant que faire se peut) en garde le contrôle.
sur les programmes économiques, j'y comprend à peu près rien et si les économistes y comprennaient vraiment quelquechose, on en serait pas ou on en est (ok, ça, c'est un peu du troll). Je veux dire que n'étant pas compétent sur le sujet, je n'en parle pas.
Bon, ça part un peu dans tous les sens. Le point central au final, c'est que Sarkozy ne me convainc pas de sa sincérité, parce que pour ce que j'en connais, ses actes sont en contradiction avec son discours.
Royal me fait réver ? Non, mais si elle avait vraiment pas la carrure, elle en serait pas là. Pas de doute sur sa capacité à tenir la charge donc. Pour le reste, je lui laisse le bénéfice du doute.
[^] # Re: fais bosser ton imagination
Posté par gaaaaaAab . En réponse au message document recapilutatif SED. Évalué à 2.
awk 'BEGIN{prev="unset"} /^const\>|^int\>|^temp\>/ {if (prev != $1) print ""; print $0; prev = $1; next} {print}'
[^] # Re: fais bosser ton imagination
Posté par gaaaaaAab . En réponse au message document recapilutatif SED. Évalué à 2.
Le problème fondamental, c'est que sed travaille ligne par ligne, et là, tu veux faire quelquechose pour lequel il faut travailler sur plusieurs lignes. Forcément, ça va être compliqué ...
en repartant de ton exemple dans un commentaire ci dessus, une proposition en awk :
awk 'BEGIN{prev="unset"} /^const\>|^int\>|^temp\>/ {if (prev != $1) print ""; print $0; next} {print}'
attention, cette version ne fonctionne que si tes identifiants (int, const ou autre) sont en début de ligne puisque $1 représente le premier élément de la ligne.
C'est pas le hello world du awk, donc l'opportunité d'apprendre quelques trucs de plus ;)
man awk pour plus de détails, et pose d'autres questions si tu t'en sors pas !
# fais bosser ton imagination
Posté par gaaaaaAab . En réponse au message document recapilutatif SED. Évalué à 2.
- avec awk (pas trop compliqué, mais moyen performant),
- en utilisant l'option -c de grep et une habile combinaison de head et de tail dans tous les sens (p-e pas super efficace, mais ça doit être rigolo à écrire =)
- en encapsulant tes regex dans un langage de script de plus haut nieveau (python, perl, ruby, ...)
bref, innove ! :-)
[^] # Re: sed -i et autres ...
Posté par gaaaaaAab . En réponse au message aide sur un script. Évalué à 2.
En fait, plutôt que lancer plusieurs sed avec une regex chacun, tu peux lancer un seul sed avec plusieurs regex. L'option -e permet de faire ça, genre :
sed -e regex1 -e regex2 ... -e regexn
Possible que sur certaines plate forme, l'option -e soit obligatoire, même quand il y a une seule regex. Je ne sais plus trop, mais j'ai pris l'habitude de le mettre tout le temps maintenant ...
# sed -i et autres ...
Posté par gaaaaaAab . En réponse au message aide sur un script. Évalué à 1.
for file in [^$prefix]*
do
echo $file
done
fonctionne chez moi ... Bizzare que ça ne passe pas chez toi.
- Tu peux éventuellement utiliser des trucs spécifiques à bash (moins portable donc ) :
shopt -s extglob
for file in !($prefix); do
echo $file
done
man bash pour plus de détails
- pour éviter tous les fichiers temporaires, tu peux utiliser l'option -i de sed
- une regex plus simple pour matcher le motif virgule ou virgule + espace est :
, \? (soit virgule + espace + point d'interrogation echappé). Ensuite, dans ton motif de substitution, tu n'as plus besoin d'échapper les caractère
's/, \?/, /g' doit suffire. Les motifs \< et \> ne sont pas utiles ici, puisque l'espace et la virgule sont déjà des délimiteurs de mot.
- pour rajouter END à la fin, le mieux, c'est encore :
echo $end >> $file
(simple is beautiful ;)
# heu ...
Posté par gaaaaaAab . En réponse au message sed et caractères spéciaux. Évalué à 4.
Sinon, on l'oublie souvent (voire on le sait pas), mais on peut utiliser n'importe quel caractère comme séparateur pour sed, genre '~'
du coup, sed -e 's~//~#~g' fichier, ça le fait aussi
sed, c'est dien
--> []
[^] # Re: grep
Posté par gaaaaaAab . En réponse au message condition et script shell. Évalué à 2.
[^] # Re: stty columns XX
Posté par gaaaaaAab . En réponse au message Terminal too wide. Évalué à 2.
# changer vi
Posté par gaaaaaAab . En réponse au message Terminal too wide. Évalué à 6.
[^] # Re: question de contrôle ...
Posté par gaaaaaAab . En réponse au message trouver un caractère "nouvelle page" avec grep. Évalué à 2.
en shell, pareil je pense. non ?
[^] # Re: question de contrôle ...
Posté par gaaaaaAab . En réponse au message trouver un caractère "nouvelle page" avec grep. Évalué à 1.
Ctrl-V Ctrl-J
cf : http://blog.robfelty.com/category/perl/
[^] # Re: question de contrôle ...
Posté par gaaaaaAab . En réponse au message trouver un caractère "nouvelle page" avec grep. Évalué à 2.
# question de contrôle ...
Posté par gaaaaaAab . En réponse au message trouver un caractère "nouvelle page" avec grep. Évalué à 6.
si tu tapes le caractère '^' puis le caractère L, ça ne va pas marcher. Il faut faire :
Ctrl + V puis Ctrl + L
ça aide ?
# ordre
Posté par gaaaaaAab . En réponse au message Makefile et petit soucis de liens. Évalué à 4.
dans ton édition de lien, essaie de mettre tes .o en premier, et les libs ensuite et tiens nous au courant !
# [AFUL] groupe détaxe
Posté par gaaaaaAab . En réponse au message un ordinateur portable avec linux ?. Évalué à 3.
http://www.aful.org/wikis/detaxe/PageAccueil
sinon, je voulais, comme toi, un portable sans OS. Pas trouvé rue montgallet. Par contre, Surcouf assemble des portables sans OS. C'est pas forcément le meilleur rapport qualité/prix, je peux pas dire, puisque mon critère principal, c'est que je voulais pas de Windows ... :D
en tout cas, avec le prix d'une licence wIndows en moins, ça m'a paru correct :)
[^] # Re: oui, il peut
Posté par gaaaaaAab . En réponse au message Grep -v d'une liste. Évalué à 1.
[^] # Re: oui, il peut
Posté par gaaaaaAab . En réponse au message Grep -v d'une liste. Évalué à 1.
par contre, le cat ne sert à rien. D'ailleurs, globalement, tout usage de cat dans un script ou dans une succession de commande est probablement inutile :-)
sinon, tu peux aussi demander à grep de lire les motifs à partir d'un fichier.
Je viens de tester, et les options -f et -v sont compatibles.
# oui, il peut
Posté par gaaaaaAab . En réponse au message Grep -v d'une liste. Évalué à 2.
on ne peut pas passer plusieurs options -v à grep, il faut donc se débrouiller pour construire *la* regex qui gère d'un seul coup tous les motifs que tu veux exclure.
[^] # Re: 1
Posté par gaaaaaAab . En réponse au message Grep qui rend 2 lignes en reponse. Évalué à 1.
[^] # Re: uname ?
Posté par gaaaaaAab . En réponse au message Comment reconnaitre sa distribution ?. Évalué à 5.
# ls
Posté par gaaaaaAab . En réponse au message Chercher les liens symboliques brisés. Évalué à 1.
cf l'option -L
$ ls -l
total 4
drwxrwxr-x 2 gab gab 4096 May 11 2007 dir
-rw-rw-r-- 1 gab gab 0 May 11 2007 file
lrwxrwxrwx 1 gab gab 4 May 11 2007 lien_casse -> yapa
lrwxrwxrwx 1 gab gab 4 May 11 2007 lien_dir -> dir/
lrwxrwxrwx 1 gab gab 4 May 11 2007 lien_file -> file
$ ls -L lien_file >/dev/null 2>&1
$ echo $?
0
$ ls -L lien_dir >/dev/null 2>&1
$ echo $?
0
$ ls -L lien_casse >/dev/null 2>&1
$ echo $?
2
[^] # Re: je ne m'appelle pas "syntax error"! :-)
Posté par gaaaaaAab . En réponse au message shell (bash) et C. Évalué à 1.
Et juste pour faciliter les recherches google ;) , le petit nom en anglais de la technique, c'est le "here script"
[^] # Re: A tes risque et péril
Posté par gaaaaaAab . En réponse au message Quel langage me conseilleriez vous ?. Évalué à 2.
# programmation fonctionnelle
Posté par gaaaaaAab . En réponse au message Quel langage me conseilleriez vous ?. Évalué à 4.
sinon, c'est pas inintéressant de tâter un peu de javascript.
# personnalités ?
Posté par gaaaaaAab . En réponse au sondage Pour les élections présidentielles je vais. Évalué à 3.
Comme il est pas passé au second tour, il faut bien choisir entre les deux qui restent (sauf à s'abstenir ou voter blanc).
Comment choisir entre 2 gens dont je n'ai pas trop écouté les discours (pas de télé, et je lis pas la presse), avec Internet pour seule source d'information (avec toutes les manipulations, tentatives de désinformations et vraies informations confidentielles qui filtrent que ça implique) ?
Bon, j'aime pas trop Royal. En fait, j'aime pas sa voix, ni sa façon de parler. Par contre, je trouve que Sarkozy est un très bon orateur. Et pourtant, j'ai pas du tout un ressenti positif sur Sarkozy. En creusant un peu, c'est pas tant du pur subjectif que ça : l'image que j'ai de Sarkozy s'est construite au fil du temps, par ses paroles, par ses actes.
Sur le fond, Sarkozy n'arrive pas à me convaincre de sa sincérité. Rien à faire.
Quand je l'entend parler de renforcer les pouvoirs du Parlement, je repense à DADVSI et à l'urgence qui a empéché la seconde lecture, aux interventions téléguidées (Wauquiez et compagnie) pour défendre les intérêts de maisons de disques.
Autre point, comme l'explique Maitre Eolas dans un de ses billets (http://maitre-eolas.fr/2007/04/03/592(...) ), il est dangereux que le législateur supprime toute liberté d'aménagement de peine au juge. De ce que j'en ai entendu (et ça doit pas être bien compliqué à vérifier), les lois votées ces derniers temps sont plutôt explicitement répressives, ôtant aux juges des possibilités d'aménagement (alors que c'est le fondement de leur rôle. Si la loi décide de tout, plus besoin de juges ...).
Complètement rien à voir, Bouygues a des vues sur Areva (c'est pas un scoop, demandez à Google). Pour l'instant, Areva est sous le contrôle de l'état. Comme Bouygues et Sarkozy sont super potes, la probabilité que l'état sorte du capital d'Areva au profit de Bouygues est environ 1. Ca explique aussi la position aussi pro nucléaire du candidat UMP dans le débat d'hier soir il me semble. L'énergie, pour moi, ça fait partie des infrastructures, et il me parait logique que l'état (ou l'Europe, 'fin un truc politique tant que faire se peut) en garde le contrôle.
Sinon, via le blog de Daniel Schneidermann (http://www.bigbangblog.net/article.php3?id_article=586 ), le rapport de la Cimade sur la circulaire de régularisation des sans papiers dont un enfant est scolarisé (http://www.cimade.org/downloads/Cimade_Rapport_circulaire.pd(...) ).
C'est un peu long à lire, mais si vous êtes de bonne foi, vous ferez probablement l'effort de le parcourir. Vous en pensez quoi ?
sur les programmes économiques, j'y comprend à peu près rien et si les économistes y comprennaient vraiment quelquechose, on en serait pas ou on en est (ok, ça, c'est un peu du troll). Je veux dire que n'étant pas compétent sur le sujet, je n'en parle pas.
Bon, ça part un peu dans tous les sens. Le point central au final, c'est que Sarkozy ne me convainc pas de sa sincérité, parce que pour ce que j'en connais, ses actes sont en contradiction avec son discours.
Royal me fait réver ? Non, mais si elle avait vraiment pas la carrure, elle en serait pas là. Pas de doute sur sa capacité à tenir la charge donc. Pour le reste, je lui laisse le bénéfice du doute.
mes deux centimes