Ich möchte eine Variable analysieren (in meinem Fall ist es die Development-Kit-Version), um sie dot ( .
) -frei zu machen . Wenn version='2.3.3'
ja, ist die gewünschte Ausgabe 233
.
Ich habe es wie folgt versucht, aber es muss .
durch einen anderen Charakter ersetzt werden, der mir das gibt 2_3_3
. Es wäre in Ordnung gewesen, wenn tr . ''
es funktioniert hätte.
1 VERSION='2.3.3'
2 echo "2.3.3" | tr . _
bash
text-processing
Gebet
quelle
quelle
echo "2.3.3" | tr -d .
.VERSION='2.30.3100'
? Egal was gerade.
entfernt wird mit allen Antworten hier.Antworten:
Es muss kein externes Programm ausgeführt werden.
bash
Die String-Manipulation von kann damit umgehen (auch verfügbar inksh
(woher es kommt) undzsh
):(In den Handbüchern dieser Shells finden Sie dies im Abschnitt zur Parametererweiterung.)
quelle
${string//substring/replacement}
, wobei anscheinend das Fehlen des endgültigen Schrägstrichs und der Ersetzungszeichenfolge als Löschen interpretiert wird . Sehen Sie hier .man bash
heißt es deutlich im Abschnitt Shell Parameter Expansion : „${parameter/pattern/string}
(…) Wenn der String null ist, werden Übereinstimmungen des Musters gelöscht und das/
folgende Muster kann weggelassen werden.“"1.0.0"
und ich wollte nur die Nummer, also folge dem, was @manatwork vorschlug, das ich geändert habe:"${VERSIONNUM//'"'}"
Ich füge sie jedoch ein, auch' '
weil sie sonst nicht den""
gleichen String zum Abheben erkennen würde."
sind im Wert vorhanden? Ich fürchte , diese als neue Frage zählt, sondern versuchen, nur die double zu entkommen:"${VERSIONNUM//\"}"
pastebin.com/3ECDtkwH-ash
auch!In chronologischer Reihenfolge:
tr / sed
csh / tcsh
POSIX-Schalen:
ksh / zsh / bash / yash (und busybox
ash
wenn gebaut mitASH_BASH_COMPAT
)zsh
quelle
Zusätzlich zu den erfolgreichen Antworten gibt es bereits. Dasselbe kann
tr
mit der--delete
Option erreicht werden.Welches wird ausgegeben:
233
quelle
--delete
Flagge nicht erkannt, aber Sie können-d
stattdessen verwendendu solltest es
sed
stattdessen mit versuchensed 's/\.//g'
quelle
Das würde nur Ziffern zurückgeben, egal welche anderen Zeichen vorhanden sind
quelle
Perl
Python
Wenn
$VERSION
nur Ziffern und Punkte enthalten sind, können wir etwas noch kürzeres machen:(Vorsicht, es handelt sich um eine Sicherheitsanfälligkeit durch Code-Injection, die
$VERSION
möglicherweise Zeichen enthält).AWK
Oder dieses:
quelle