Flux rss
Collection CommentÇaMarche.net
Rechercher : dans
Par :

[unix script] chaines & mots pour delimiteurs

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

1

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

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

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

 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
Télécommande universelle pour chaine hifi bonjour, j'ai cassé la Télécommande de ma chaine hifi philips (MC M350/22) je cherche désespéremment une Télécommande UNIVERSELLE sachant la guider. Quelqu'un aurait -il un tuyau ? merci d'avance. www.commentcamarche.net/forum/affich-1069525-telecommande-universelle-pour-chaine-hifi
[linux - bash] explosion chaine de caracteres (Résolu) Bonjour tout le monde. Je voudrais savoir s'il existe sous Linux une commande pour exploser une chaine de caractere à partir d'un sépérateur donné et récupérer un élément de cette chaine. Exemple : save_2005_03_31 donne une fois explosé suivant le... www.commentcamarche.net/forum/affich-1407730-linux-bash-explosion-chaine-de-caracteres
[shell unix] manipuler une chaine (Résolu) Bonjour, quelle commande UNIX permettrait de ne garder que les 6 premières et les 2 dernières lettres d'une chaine de caractères ? Par exemple, maChaine = 1234567890 et je veux obtenir : maChaine2 = 12345690 Merci de votre aide www.commentcamarche.net/forum/affich-1716687-shell-unix-manipuler-une-chaine
Exécuter un script shellExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha-Bang Premièrement,... www.commentcamarche.net/faq/sujet-4627-executer-un-script-shell
Changer le mot de passe via un scriptChanger le mot de passe via un script passwd Traditionnellement avec la commande "passwd" et son option "--stdin", au travers d'un "tube" (pipe en anglais), ce qui donne la syntaxe suivante :echo -e "new_password\nnew_password" | (passwd --stdin... www.commentcamarche.net/faq/sujet-5976-changer-le-mot-de-passe-via-un-script
[UNIX Shell Script] Découpage d'une date (Résolu)Bonjour, J'aimerais découper une date sous unix (config SunOS 5.9) et mettre le contenu des trois éléments dans 3 variables (en shell script bien entendu). Je sais que cut -d suivi d'un caractère permet de definir un delimitateur. J'ai pu... www.commentcamarche.net/forum/affich-2540169-unix-shell-script-decoupage-d-une-date
Recherche récursive en UNIXBonjour, Bonjour, Je cherche actuellement à faire n petit script permettant de rechercher une chaine de caractère dans l'ensemble des fichiers de mon serveur. Avec find . -name index.php -print j'arrive a trouver les noms de fichiers, mais moi je... www.commentcamarche.net/forum/affich-760708-recherche-recursive-en-unix
Recherche chaines avec commande universelleBonjour, J'ai un petit téléviseur schneider (36 cm) et je n'ai plus la télécommande d'origine mais une commande universelle phillips or impossible d'installer les chaines. La fonction menu me fonctionne pas . Une personne très sympathique pourrait-t... www.commentcamarche.net/forum/affich-8337569-recherche-chaines-avec-commande-universelle
Javascript - Les chaînes de caractèresQu'est-ce qu'une chaîne de caractère Une chaîne de caractère est, comme son nom l'indique, une suite de caractères. On la représente par la suite de caractères encadrée par des guillemets simples (') ou doubles ("), sachant que les deux types de... www.commentcamarche.net/contents/javascript/jschar.php3