Je dois pouvoir faire est de remplacer un espace ( ) par un point (
.
) dans une chaîne en bash.
Je pense que ce serait assez simple, mais je suis nouveau donc je ne peux pas comprendre comment modifier un exemple similaire pour cette utilisation.
tr
les chaînes longues. Sur mon système, iltr
surpasse les performances de bash en commençant par des chaînes de plus de1000
caractères. Il semble que la complexité temporelle de bash soit pire que linéaire. Un petit test:x="$(tr -dc 'a-z \n' </dev/urandom | head -c1M)"; time y="$(tr ' ' \\- <<< "$x")"; time z="${x// /-}"
. Avec une longueur de chaîne de 1M (= 2 ^ 20) atr
pris0.04s
et bash 5.0.11 a pris17s
. Avec 2M atr
pris0.07s
(attendu) mais bash a pris69s
(4 fois plus longtemps pour deux fois la longueur de la chaîne).