[pdksh] variable substring
#1

Bonjour,

Comment on soustrait une sous-chaîne d'une chaîne en pdksh - le shell par défaut d'OpenBSD ?

En effet, ceci fonctionne sous ksh, mais pas pdksh :

Code :
subchain="${chain:0:7}"

Qui permet d'obtenir le 7 premiers caractères de la variable 'chain'...

En pdksh, cela retourne une erreur : bad substitution

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre
#2

Bien sûr, coup qui me devient classique, c'est quand je demande que j'arrive enfin à trouver la solution... pfff !

Et, la solution est :

Code :
printf '%.7s\n' "$chain"

Un autre moyen :

Code :
echo "$chain" | awk '{ print substr($0, 0, 7) }'

----

Enjoy-ID!
Enjoy-IT!

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre
#3

Sinon,
Code :
echo "${chain%${chain#???????}}"
mais je préfère celle avec printf.
Répondre
#4

Merci, mais bonjour le barbarisme...
mais je préfère mes deux solutions présentées... la tienne a le propos de présenter une autre manière de faire ! Big Grin

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre
#5

Ha ha ha XD
Répondre
#6

(22-10-2017, 21:48:54)PengouinBSD a écrit :  Merci, mais bonjour le barbarisme...
C'est pour ça que je préfère celle avec printf.
La seule raison pour laquelle le barbarisme a été posté est qu'il ne fait pas appel à un processus externe.

Sinon, quitte à utiliser un pipe, une solution avec 
Code :
cut -c 1-7
bat toutes les autres en terme de simplicité.
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)