#1 Le 29/09/2015, à 19:46
- michael-kael
Linux bash script extrait une partie d'une chaine
Bonjour
je suis en train de développer un script et j'ai besoin d'extraire une partie d'une chaine stockée dans la variable RES.
le début de la chaine à récupérer est toujours placé au même endroit mais sa taille est variable. Heureusement, elle se termine par un carriage return.
je n'arrive pas à trouver une solution simple pour récupérer cette partie de chaine.
Je vous ai mis le code complet. c'est ligne 22 que ca se passe!!! pour le moment j'ai fait un "${RES:57:11}" . le problème c'est que parfois la chaine a récupérer fait plus de 11 caractères.
#!/bin/bash
# this script reply to a sms containing ip the device wwan0 ip address
MESS="ifconfig wwan0:\n"
MESS+=`ifconfig wwan0`
MESS+="\n"
#get the file containing the IP key word
RES=$(grep -ri -B2 ip /tmp/sms/recv/)
#if IP is in the file
if test -n "$RES"; then
echo "new IP request sms message from 00${RES:44:11}"
sleep 1
#envoi du SMS
echo -e "TO=00${RES:44:11}\nMSG=\"${MESS}\"\n" > /tmp/sms/send/sms
#delete the sms received
grep -l -i "ip" /tmp/sms/recv/* 2>/dev/null | xargs rm -f
else
exit 0
fi
exit 0
Hors ligne
#2 Le 29/09/2015, à 21:49
- pingouinux
Re : Linux bash script extrait une partie d'une chaine
Bonsoir,
Tu peux remplacer
${RES:44:11}
par
$(cut -c45- <<<"$RES")
qui prendra toute la chaîne à partir du 45ème caractère.
Hors ligne
#3 Le 30/09/2015, à 07:59
- credenhill
Re : Linux bash script extrait une partie d'une chaine
hello
du 44ème car. jusqu'à la fin
${RES:44}
Hors ligne
#4 Le 30/09/2015, à 08:13
- pingouinux
Re : Linux bash script extrait une partie d'une chaine
Ah oui, bien sûr, j'ai encore cherché midi à 14h…
Hors ligne
#5 Le 10/10/2015, à 09:04
- Postmortem
Re : Linux bash script extrait une partie d'une chaine
Salut,
hello
du 44ème car. jusqu'à la fin${RES:44}
Non, là tu prends à partir du 45eme !
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne