[unix script] chaines & mots pour delimiteurs
Fermé
watch3r
Messages postés
2
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
28 juin 2007
-
28 juin 2007 à 18:51
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 28 juin 2007 à 20:32
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 28 juin 2007 à 20:32
A voir également:
- [unix script] chaines & mots pour delimiteurs
- Script vidéo youtube - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Microsoft activation script - Accueil - Windows
- Mes identifiants et mots de passe - Guide
4 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
28 juin 2007 à 19:18
28 juin 2007 à 19:18
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 $;-))
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
28 juin 2007 à 19:18
28 juin 2007 à 19:18
Salut,
pour s'amuser
C'est impératif de savoir la chaine à traiter pour donner une solution fiable.
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.
watch3r
Messages postés
2
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
28 juin 2007
28 juin 2007 à 20:07
28 juin 2007 à 20:07
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.
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.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
28 juin 2007 à 20:32
28 juin 2007 à 20:32
$ 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 $;-))