Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/08/2013, à 11:01

MrFaelivrin

[RESOLU] Le retour des expressions régulières avec awk!

Bonjour tout le monde, belle journée? smile


Toujours des erreurs et cette fois-ci avec la création d'un dossier "---".
Je vous expose mes tests effectués, l'objectif est simplement de renommer tous les dossiers "---" en "autres". (Etant donné que dans mes scripts ça met un grand bazar.)

j'ai suivi vos conseils précédemment en mettant "--" pour indiquer la fin des options avec:
mkdir -- "---"

Sauf que j'ai par la suite tout pleins d'autres problèmes avec ce dossier, je me suis simplement facilité la tache en modifiant toutes ces chaînes spéciales!

Je crée un simple fichier:
test.txt:
---
------

Ma commande awk:

awk '{ chaine=$0; gsub(/\-\-\-/,"autres",chaine); print $0;}' "./test.txt"  > ./resultats.txt 
cat resultats.txt

Dans resultats, il n'y a eu aucune modification, pourquoi? :s
Merci pour toute l'aide qui pourra m'être offerte.

(je m'y prends de bonne heure, je suis à la fin de mon projet, je veux le terminer avant ce soir. ahaahahahah, je suis ambitieux! )


EDIT: j'ai même essayé cette REGEXP: /---/
Mais "-" est un méta-caractère étant donné qu'il est utilisé dans les "classes d'équivalences". [0-9]

Dernière modification par MrFaelivrin (Le 02/08/2013, à 11:25)

Hors ligne

#2 Le 02/08/2013, à 11:24

MrFaelivrin

Re : [RESOLU] Le retour des expressions régulières avec awk!

Désolé pour ce post!!
En examinant ma ligne je me suis aperçu d'une chose...

J'ai laissé print $0 alors que c'est la valeur de la variable "chaine" à afficher!

Hors ligne

#3 Le 02/08/2013, à 11:28

credenhill

Re : [RESOLU] Le retour des expressions régulières avec awk!

hello
ou aussi

awk --posix '{ chaine=$0; gsub("-{3}","autres",chaine); print chaine;}'

Hors ligne

#4 Le 02/08/2013, à 11:30

pingouinux

Re : [RESOLU] Le retour des expressions régulières avec awk!

Ta commande marche parfaitement, et pouvait même être simplifiée :

$ awk '{ gsub(/---/,"autres"); print;}' "./test.txt"  > ./resultats.txt

$ cat resultats.txt
autres
autresautres

Hors ligne

#5 Le 02/08/2013, à 14:16

MrFaelivrin

Re : [RESOLU] Le retour des expressions régulières avec awk!

Intéressant! smile

J'adore quand on partage ses points de vue sur les commandes en shell!
Comment les raccourcir(les simplifier) et donc les rendre plus élégantes!

La programmation c'est tout un art!




Bon pour mon projet c'est vraiment pas gagné! ^^
Là je viens de constater que des dossiers comme "Police & Aventure" posaient des problèmes dans les recherches...
Dans mes commandes du genre:

awk -v research="${research}" -v subcategory="${subcategory}" -v category="${category}" -F "\t" '$2==research && $5==category && $6==subcategory && $8!="pasdelivre.php" { print $8;}' "$workfile" | sort -u > ./0000_liste_url_prc.txt  


subcategory ca peut être un truc du genre: "Police & Aventure"
Et je pense que le caractère & pose problème..
Mais si j'échappe juste avant le "&" avec un sed type:

subcategory=$(echo ${subcategory} | sed s/'&'/'\&'/g;);
awk -v research="${research}" -v subcategory="${subcategory}" -v category="${category}" -F "\t" '$2==research && $5==category && $6==subcategory && $8!="pasdelivre.php" { print $8;}' "$workfile" | sort -u > ./0000_liste_url_prc.txt 

Cela ne va pas plus fonctionner, je le crains. sad


En fait je parviens à récupérer les auteurs mais pas les livres... je creuse je creuse je creuse....
C'est très capricieux le shell! Mais qu'est-ce que c'est pratique et tellement puissant quand tu maîtrises!

Dernière modification par MrFaelivrin (Le 02/08/2013, à 14:18)

Hors ligne

#6 Le 02/08/2013, à 15:18

pingouinux

Re : [RESOLU] Le retour des expressions régulières avec awk!

Ta commande awk en #5 a l'air correcte, et ne pose aucun problème avec "Police & Aventure" .
Donne éventuellement un exemple (simplifié) et le message d'erreur.

Ajouté : Les champs de ton fichier "$workfile" sont-ils bien séparés par des tabulations ?

Dernière modification par pingouinux (Le 02/08/2013, à 15:20)

Hors ligne

#7 Le 02/08/2013, à 15:47

MrFaelivrin

Re : [RESOLU] Le retour des expressions régulières avec awk!

En fait j'ai pensé que mes erreurs venaient de ce genre de dossier parce que je ne pouvais pas accéder au dossier.


Mais en regardant le déroulement de mon script j'observe:

 cd: can't cd to Dumas, Alexandre

J'ai pas la moindre idée en fait du pourquoi je ne peux pas accéder à certains dossiers. :'(

J'ai l'impression de devenir fou. ^^
Je tourne en rond.. je tourne en rond.


La virgule? L'espace?? Je n'en sais plus rien.

Dernière modification par MrFaelivrin (Le 02/08/2013, à 15:52)

Hors ligne

#8 Le 02/08/2013, à 15:56

pingouinux

Re : [RESOLU] Le retour des expressions régulières avec awk!

Il faudrait voir le script qui génère cette erreur. D'après le message, ce ne devrait être ni un répertoire inexistant, ni un manque de permission sur ce répertoire.
Ajouté : Ou alors, tu es en sh et non en bash

Dernière modification par pingouinux (Le 02/08/2013, à 16:08)

Hors ligne

#9 Le 02/08/2013, à 15:57

Postmortem

Re : [RESOLU] Le retour des expressions régulières avec awk!

Salut,
Pour info, pour remplacer un & par \& avec sed, il faut faire ainsi :

echo 'Police & Aventure' | sed 's/&/\\&/g'

Si tu mets un seul \, tu auras simplement & dans le remplacement.
Si tu ne mets pas de \ devant le &, le & sera remplacé par le texte correspondant à l'expression régulière renseigné dans la 1ère partie du sed :

$ echo 'Police & Aventure' | sed 's/.*/& ## & ## &/'
Police & Aventure ## Police & Aventure ## Police & Aventure

Sinon, sans utiliser sed :

$ echo "${subcategory}"
Police & Aventure
$ subcategory="${subcategory/&/\&}"
$ echo "${subcategory}"
Police \& Aventure

Sinon, pour ton problème avec "Alexandre Dumas", faudrait que tu montres ton code ainsi que d'où vient et comment tu extraits ce "Dumas, Alexandre".


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#10 Le 02/08/2013, à 15:59

MrFaelivrin

Re : [RESOLU] Le retour des expressions régulières avec awk!

../ajout.sh: 12: cd: can't cd to Conan, Laure


l12 de ajout.sh:

foldername=$1;

#On entre dans le dossier de l'auteur.
#foldername=$(echo ${foldername} | sed s/', '/'\,\ '/g;)
cd "${foldername}";

Dernière modification par MrFaelivrin (Le 02/08/2013, à 23:06)

Hors ligne

#11 Le 02/08/2013, à 16:06

pingouinux

Re : [RESOLU] Le retour des expressions régulières avec awk!

research="$1"; 
foldername="$1";

Hors ligne

#12 Le 02/08/2013, à 23:08

MrFaelivrin

Re : [RESOLU] Le retour des expressions régulières avec awk!

J'aurais du supprimer ce doublon. Je m'en sers en fait pour distinguer le dossier de la recherche effectuee. smile

Dernière modification par MrFaelivrin (Le 02/08/2013, à 23:09)

Hors ligne