Ich muss in der Lage sein, ein Leerzeichen ( ) durch einen Punkt (
.
) in einer Zeichenfolge in Bash zu ersetzen .
Ich denke, das wäre ziemlich einfach, aber ich bin neu, daher kann ich nicht herausfinden, wie ich ein ähnliches Beispiel für diese Verwendung ändern kann.
tr
lange Saiten bevorzugen . Auf meinem Systemtr
übertrifft Bash ab Zeichenfolgen mit mehr als1000
Zeichen. Es scheint, dass die zeitliche Komplexität von bash schlimmer als linear ist. Ein kleiner Test :x="$(tr -dc 'a-z \n' </dev/urandom | head -c1M)"; time y="$(tr ' ' \\- <<< "$x")"; time z="${x// /-}"
. Mit einer Stringlänge von 1M (= 2 ^ 20)tr
nahm0.04s
und Bash 5.0.11 nahm17s
. Mit 2Mtr
dauerte0.07s
(erwartet), aber Bash dauerte69s
(4-mal so lang für die doppelte Saitenlänge).