rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[unix script] chaines & mots pour delimiteurs

Posté par watch3r, le jeudi 28 juin 2007 à 18:51:51
bonjour à tous,

dans un script unix, j'ai besoin de supprimer le début et la fin d'une chaine de caractères.

- une variable chaine contient la chaîne à manipuler :
chaine="EXPRESSION A SUPPRIMER des caractères et des espaces que je conserve MOT_CLE avec des mots à supprimer"
- une variable expression contient la chaîne à supprimer en début de chaîne, avec des caractères et des espaces :
expression="EXPRESSION A SUPPRIMER"
- la chaîne de caractères MOT_CLE est une constante

comment transformer, en script unix, la chaîne
"EXPRESSION A SUPPRIMER des caractères et des espaces que je conserve MOT_CLE avec des mots à supprimer"
en
"des caractères et des espaces que je conserve"

merci par avance à tous pour votre aide
Configuration: Mac OS X
Safari 419.3
Répondre à watch3r  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jipicy, le jeudi 28 juin 2007 à 19:18:25
Salut,
$ chaine="EXPRESSION A SUPPRIMER des caractères et des espaces que je conserve MOT_CLE avec des mots à supprimer"

$ new_chaine=$(echo ${chaine//EXPRESSION A SUPPRIMER }) && echo ${new_chaine// MOT_CLE*}

des caractères et des espaces que je conserve

$
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.
Répondre à jipicy

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lami20j, le jeudi 28 juin 2007 à 19:18:39
Salut,

pour s'amuser
$ echo $chaine
EXPRESSION A SUPPRIMER des caractères et des espaces que je conserve MOT_CLE avec des mots à supprimer
$ echo $chaine | sed -r 's/EXPRESSION A SUPPRIMER (.*) MOT_CLE.*/\1/'
des caractères et des espaces que je conserve
maintenant si tu veux une solution fiable, soit un peu plus précis
C'est impératif de savoir la chaine à traiter pour donner une solution fiable.
lami20j
Répondre à lami20j

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
watch3r, le jeudi 28 juin 2007 à 20:07:39
merci pour vos retours hyper rapides ! chapeau bas !!

je récupère une string tmpDescription qui a cette forme :
"LE NOM DU SITE la description du site DESCRIPTIF ACCES à nouveau le descriptif de l'accès au site"

cette chaîne tmpDescription reprend des éléments à supprimer :
- la variable $reference1 contient déja "LE NOM DU SITE"
- la chaîne "DESCRIPTIF ACCES" est fixe dans toutes les lignes du fichier csv que je traite

je dois donc transformer dans le script ci-dessous le contenu de la variable
tmpDescription = "LE NOM DU SITE la description du site DESCRIPTIF ACCES à nouveau le descriptif de l'accès au site"
en
description = "la description du site"

pour celà je pense :
1 - supprimer le début de la chaîne tmpDescription en utilisant la variable $reference1 qui vaut déjà "LE NOM DU SITE"
2 - supprimer la fin de la chaîne tmpDescription à partir de l'expression récurrente "DESCRIPTIF ACCES"

je vous livre mon script qui tourne sous mac os x :

#chemin relatif du fichier recupere
ficwin="./windows.csv"

#chemin relatif du fichier csv en format utf-8
utf8="./utf-8.csv"

#chemin relatif du fichier keynote
keynote="./keynote.out"

#on convertit le fichier en utf-8 et on le stocke dans un nouveau fichier utf-8.csv
iconv -f ISO-8859-15 -t UTF-8 $ficwin >$utf8

#on parse le fichier csv et on renseigne les variables
cat $utf8 | while read ligne; do
reference1=`echo "$ligne" | cut -d ';' -f 1,1 |sed 's/\"^*//' |sed 's/\"//'`
reference2=`echo "$ligne" | cut -d ';' -f 11,11 |sed 's/\"^*//' |sed 's/\"//'`
reference3=`echo "$ligne" | cut -d ';' -f 13,13 |sed 's/\"^*//' |sed 's/\"//'`
tmpDescription=`echo "$ligne" | cut -d ';' -f 18,18 |sed 's/\"^*//'`
description=???????????????????
done


merci encore une fois d'avance pour votre aide.
Répondre à watch3r

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 jipicy, le jeudi 28 juin 2007 à 20:32:19
$ echo ${tmpDescription}

LE NOM DU SITE la description du site DESCRIPTIF ACCES à nouveau le descriptif de l'accès au site

$ echo $ref1

LE NOM DU SITE

$ echo $ref2

DESCRIPTIF

$ echo ${tmpDescription} | sed -r "s/$ref1(.*)$ref2.*/\1/"

la description du site

$ 
Merci lami20j ;-))

Mais aussi :
$ description=$(new=$(echo ${tmpDescription//$ref1}) && echo ${new//$ref2*})

$ echo $description

la description du site

$   
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.
Répondre à jipicy
Logiciels pertinents trouvés dans les téléchargements
Télécharger WLM Universal Patcher++ 1.0.1WLM Universal Patcher++ - WLM Universal Patcher est un patch universel pour MSN (Windows Live Messenger) permettant : d'ouvrir plusieurs sessions...Catégorie: Messagerie instantanée
Licence: Freeware/gratuit
Télécharger Unison 2.24.6Unison - Unison est un logiciel de synchronisation de répertoires. Il est capable de travailler de manière bidirectionnelle, c'est...Catégorie: Gestion de fichiers
Licence: Open Source
Télécharger All In One Video Script 1.0All In One Video Script - All In One Video Script est un script pour l'extension GreaseMonkey pour le navigateur Firefox permettant de détecter la...Catégorie: Vidéo
Licence: Freeware/gratuit
Télécharger Revo Uninstaller 1.71Revo Uninstaller - Revo Uninstaller est logiciel de nettoyage en profondeur avec diverses fonctionnalitées : Nettoyage, désinstalleur de...Catégorie: Nettoyage
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « [unix script] chaines & mots pour delimiteurs »