Rechercher : dans
Par :

[unix script] chaines & mots pour delimiteurs

Dernière réponse le 29 jun 2007 à 13:17:29 watch3r, le 28 jun 2007 à 18:51:51 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [unix script] chaines & mots pour delimiteurs » dans :
Sed - Introduction à SED - Part II VoirSED - The Stream EDitor - Part II Ce document est une introduction à la pratique et à l'utilisation de l'éditeur de flux "SED", qui essaie de couvrir certaines fonctionnalités assez méconnues, pour ne pas dire "quasi inconnues", qui font de "SED"...
Comment récupérer le résultat d'une commande dans une variable VoirComment récupérer le résultat d'une commande dans une variable Préambule Syntaxe Exemples Préambule Il est bien souvent nécessaire de récupérer le résultat d'une commande (ou de son code retour) dans une variable afin de pouvoir...
VBScript - Les fonctions de chaînes de caractères VoirLes fonctions de chaînes de caractères Fonction Description Filter(InputStrings, Value[, Include[, Compare]]) Sélectionne des chaînes de caractères parmi un tableau de chaînes...
Systèmes UNIX - Le shell VoirIntroduction au shell L'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille». Le shell est ainsi chargé de faire l'intermédiaire entre le système...
Sécurité - Méthodologie d'une intrusion sur un réseau VoirCet article a pour but d'expliquer la méthodologie généralement retenue par les pirates pour s'introduire dans un système informatique. Il ne vise pas à expliquer comment compromettre un système mais à comprendre la façon dont il peut l'être afin de...

1

jipicy, le 28 jun 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

lami20j, le 28 jun 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

watch3r, le 28 jun 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

 jipicy, le 28 jun 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