Menu

[Shell ksh] Retirer premier caractère [Résolu/Fermé]

Messages postés
91
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
23 avril 2009
- - Dernière réponse : zipe31
Messages postés
36564
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
18 juin 2019
- 25 avril 2019 à 18:39
Bonjour,
j'aimerai pouvoir retirer le signe # d'une chaine si il est présent.

Par exemple :
#abcd
#efgh
#ijkl
mnop

Résultat attendu :
abcd
efgh
ijkl
mnop

Merci d'avance
^^

Ps: je précise que je travaille en ksh
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
43478
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
17 mars 2018
4504
1
Merci
Salut,
jp@MDK:~/tmpfs ssh$ cat plop
#abcd
#efgh
#ijkl
mnop
jp@MDK:~/tmpfs ssh$ sed 's/^#//' plop
abcd
efgh
ijkl
mnop
jp@MDK:~/tmpfs ssh$
;-))

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 43044 internautes nous ont dit merci ce mois-ci

wafiflicha
Messages postés
38
Date d'inscription
samedi 3 avril 2010
Statut
Membre
Dernière intervention
25 avril 2019
-
Salut, je te remercie sur ton retour;

j'ai essayé le code suivant mes ça n'a pas fonctonné :

FIS="COUNT(*) ---------- 71"

if [[ ${FIS} | sed 's/.\{20\}//' == "71" ]]
then
echo "okey"

exit 1

else
echo "not okey"
exit 2
fi
lEprofSonDkon
Messages postés
190
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
14 juin 2019
7 > wafiflicha
Messages postés
38
Date d'inscription
samedi 3 avril 2010
Statut
Membre
Dernière intervention
25 avril 2019
-
donc, on te montre comment faire, tu fais n'importe quoi d'autre (vraiment n'importe quoi : des pâtes pas cuites avec du pesto 8O), et tu te plains que "ça marche pas!" ?

et puis, quand la question change, on change de sujet, et donc on ouvre un nouveau sujet.
zipe31
Messages postés
36564
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
18 juin 2019
3610 > wafiflicha
Messages postés
38
Date d'inscription
samedi 3 avril 2010
Statut
Membre
Dernière intervention
25 avril 2019
-
${FIS} | sed 's/.\{20\}//'
Ça, ça ne fait strictement rien ;-((

Par contre :
$ echo "${FIS:20}"
71

Le fait. Tout comme :
$ sed 's/.* //' <<<"${FIS}"
71
wafiflicha
Messages postés
38
Date d'inscription
samedi 3 avril 2010
Statut
Membre
Dernière intervention
25 avril 2019
> zipe31
Messages postés
36564
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
18 juin 2019
-
Bonjour,

le script que je l'ai envoyé, il est enregistré dans un fichier .sh et je l'exécute sous aix;

j'ai utilisé echo "${FIS:20}" mais ça n'a pas marché
zipe31
Messages postés
36564
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
18 juin 2019
3610 > wafiflicha
Messages postés
38
Date d'inscription
samedi 3 avril 2010
Statut
Membre
Dernière intervention
25 avril 2019
-
il est enregistré dans un fichier .sh
Et le shebang, il ressemble à quoi ?
et je l'exécute sous aix
Ok donc forcément les spécificités de gnu_bash ne s'appliquent pas ;-\

Par contre la commande sed devrait le faire à condition de passer via la commande echo et un pipe ;-\
echo "${FIS}"  | sed 's/.* //'
Messages postés
91
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
23 avril 2009
5
0
Merci
Pour commencer j'arrive à récupérer tout sauf le premier caractère avec :

$$ line4="heeeeeeeeeeeeeeeeeeee"
$$ echo ${line4} | sed 's/.\{1\}//'
$$ eeeeeeeeeeeeeeeeeeee


Mais je n'arrive pas à récupérer le h.
^^
Messages postés
43478
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
17 mars 2018
4504
0
Merci
$ echo ${line4} | sed -n 's/\(.\).*/\1/p'
h
JOBiJOBa2
Messages postés
91
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
23 avril 2009
5 -
Mais ça marche très bien aussi. Ta première solution est encore plus simple pour mon problème. J'allais cherché trop compliqué ou plutôt trop long.

Merci encore
A++