Extraire une différence entre 2 chaines

Résolu/Fermé
sergio - 23 févr. 2015 à 09:17
 Utilisateur anonyme - 24 févr. 2015 à 13:21
Bonjour,

J'ai 2 chaines de caractères dans 2 variables
J'aimerai en extraire la différence, comment puis-je faire ?
exemple
a="abc de fgh"
b="abc zz fgh"
je cherche a avoir "de" dans une variable c
et "zz" dans une variable d
quelqu'un a t-il une idée ?

A voir également:

3 réponses

dubcek Messages postés 18724 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 15 mai 2024 5 615
23 févr. 2015 à 15:16
hello
$ a="abc de fgh"; b="abc zz fgh" 
$ readarray t <<<"$(echo $a $b | tr ' ' '\n' | sort | uniq -u)"
$ echo ${t[0]}
de
$ echo ${t[1]}
zz
1
Utilisateur anonyme
23 févr. 2015 à 16:04
bien sûr, il faut lire:
$ readarray t < <(echo $a $b | tr ' ' '\n' | sort | uniq -u)
0
dubcek Messages postés 18724 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 15 mai 2024 5 615
24 févr. 2015 à 08:08
non, mais les 2 fonctionnent
0
Utilisateur anonyme > dubcek Messages postés 18724 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 15 mai 2024
24 févr. 2015 à 10:01
c'est pas parce que «ça fonctionne» que c'est correct, à préconiser, ou défendable.

- - -
tous coupables, à l'échafaud !
XD
0
dubcek Messages postés 18724 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 15 mai 2024 5 615
Modifié par dubcek le 24/02/2015 à 11:24
ça va les chevilles ?
PS: on attend de lire ta proposition
0
Utilisateur anonyme > dubcek Messages postés 18724 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 15 mai 2024
Modifié par qqchquicommenceparQ le 24/02/2015 à 13:22
$ a="abc de fgh" b="abc zz fgh"
$ a_t=( $a ) b_t=( $b )
$ for i in ${!a_t[@]}; do x=${a_t[i]} y=${b_t[i]}; test "$x" = "$y" || d=( "$x" "$y" ); done
$ printf '%s\n' "${d[@]}"
de
zz


d'ailleurs, outre le "pléonasme", ta solution pourrait ne pas relever des différences quand des valeurs sont interverties.
0
Utilisateur anonyme
23 févr. 2015 à 10:21
salut,

avec quel shell comptes-tu faire ça ?
en POSIX sh, ça va être coton.

en bash, j'utiliserais des tableaux, pour pouvoir parcourir leurs éléments, et ainsi les comparer.

avec awk, je ferais pareil.
0
trés bien.
je n'avais jamais remarqué l'utilité du uniq -u, bien que j'utilisais souvant le sort -u.
Merci pour votre contribution
SErge
0