#1 Le 21/05/2013, à 16:36
- mond14
(Résolu) tester la valeur du 4ème champs et changer sa valeur
Bonjour,
j'espère que vous allez très bien chère membre.
j'ai un document texte qui contient des lignes et des champs qui sont séparer par un ; (point_virgule).
GF3423;1425431;7652;0;20;HGR454
YTU426;1865413;7659;0;9;HGR874
GFHG23;1872578;7872;0;7;HGY754
YTU428;1945324;76999;0;0;HGI897
je veux tester si le cinquième champs égale à 0 ou 20 il me le remplace par délvré si nn il le remplace par bloqué
merci pour votre aide.
Dernière modification par mond14 (Le 21/05/2013, à 17:38)
Hors ligne
#2 Le 21/05/2013, à 16:48
- Hizoka
Re : (Résolu) tester la valeur du 4ème champs et changer sa valeur
Tout en bash mais un chouille long je pense
cat fichier
GF3423;1425431;7652;0;20;HGR454
YTU426;1865413;7659;0;9;HGR874
GFHG23;1872578;7872;0;7;HGY754
YTU428;1945324;76999;0;0;HGI897
while read
do
apres=${REPLY##*;}
avant=${REPLY%;*;*}
num=${REPLY%;*} num=${num##*;}
if [[ ${num} == 20 || ${num} == 0 ]]
then
echo "${avant};délvré;${apres}"
else
echo "${avant};bloqué;${apres}"
fi
done < fichier
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#3 Le 21/05/2013, à 16:56
- mond14
Re : (Résolu) tester la valeur du 4ème champs et changer sa valeur
Bonjour,
merci pour votre réponse
svp je veux savoir ou vous lui spécifier le cinquième champs
et si je veux la remplacer par le quatrième champs
merci
Hors ligne
#4 Le 21/05/2013, à 16:57
- Hizoka
Re : (Résolu) tester la valeur du 4ème champs et changer sa valeur
et avec sed
while read
do
case $(cut -d";" -f5 <<< "${REPLY}") in
0|20) sed "s/\([[:alnum:]]*\);\([[:alnum:]]*\);\([[:alnum:]]*\);\([[:alnum:]]*\);[[:alnum:]]*;\([[:alnum:]]*\)/\1;\2;\3;\4;délvré;\5/" <<< "${REPLY}" ;;
*) sed "s/\([[:alnum:]]*\);\([[:alnum:]]*\);\([[:alnum:]]*\);\([[:alnum:]]*\);[[:alnum:]]*;\([[:alnum:]]*\)/\1;\2;\3;\4;bloqué;\5/" <<< "${REPLY}" ;;
esac
done < fichier
cut -d";" -f5 <<< "${REPLY}"
ou
awk 'BEGIN{FS=OFS=";"} {print $5}' <<< "${REPLY}"
Dernière modification par Hizoka (Le 21/05/2013, à 17:12)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#5 Le 21/05/2013, à 17:01
- Hizoka
Re : (Résolu) tester la valeur du 4ème champs et changer sa valeur
Dans le cas de full bash, c'est pas adapté por plus de modifs :
apres=${REPLY##*;}
=> efface tout jusqu'au dernier ;
=> HGR454
avant=${REPLY%;*;*}
=> efface tout jusqu'a l'avant dernier ;
=> GF3423;1425431;7652;0
num=${REPLY%;*}
=> efface le dernier ; et ce qui le suit
=> GF3423;1425431;7652;0;20
num=${num##*;}
=> efface tout jusqu'au dernier ;
=> 20
Avec sed, pour remplacer :
sed "s/\([[:alnum:]]*\);\([[:alnum:]]*\);\([[:alnum:]]*\);\([[:alnum:]]*\);[[:alnum:]]*;\([[:alnum:]]*\)/\1;\2;\3;\4;\4;\5/" <<< "${REPLY}"
Mais je sais que certains membres vont te sortir une commande awk magique
Dernière modification par Hizoka (Le 21/05/2013, à 17:03)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#6 Le 21/05/2013, à 17:13
- pingouinux
Re : (Résolu) tester la valeur du 4ème champs et changer sa valeur
Bonjour,
Avec awk :
awk -v n=5 'BEGIN{FS=OFS=";"}{if($n==0||$n==20)$n="délivré";else$n="bloqué";print}' fichier
Dernière modification par pingouinux (Le 21/05/2013, à 17:13)
Hors ligne
#7 Le 21/05/2013, à 17:14
- mond14
Re : (Résolu) tester la valeur du 4ème champs et changer sa valeur
Bonjour,
merci pour votre réponse
j'ai trouvé une réponse je ne sais si ça marche ou pas mais elle traile la premiere colone si je veux lui spécifier la 4 eme colonne qu'est ce que je doit faire .?
voila le code;
sed 's/^20/ok/; t; s/^0/livré/; t; s/^/bloqué/'
merci
Hors ligne
#8 Le 21/05/2013, à 17:17
- mond14
Re : (Résolu) tester la valeur du 4ème champs et changer sa valeur
bonjour,
merciii avous je vous remercie troop!!
cette commande à bien marché!!
awk -v n=5 'BEGIN{FS=OFS=";"}{if($n==0||$n==20)$n="délivré";else$n="bloqué";print}' fichier
merci beacoup
Hors ligne
#9 Le 21/05/2013, à 17:30
- Hizoka
Re : (Résolu) tester la valeur du 4ème champs et changer sa valeur
ha je le savais
un petit awk qui va bien.
tu peux ajouté un resolu dans le titre de ton topic
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#10 Le 21/05/2013, à 17:36
- mond14
Re : (Résolu) tester la valeur du 4ème champs et changer sa valeur
Bonjour,
oui merci beacoup ok d'accore je vai l ajouter
merci :-)
Hors ligne