der Befehl tr verursacht Probleme in Cygwin Bash.exe-Shell, funktioniert aber in mint.exe
Frage
Ich benutze Windows mit Cygwin.Der folgende Befehl sollte die Anzahl der Vorkommen von '/' in der Zeichenfolge " ausgeben./bootstrp3.CAB".Es funktioniert, wenn ich die Minze benutze.exe-Shell und Ausgänge "1":
echo ./bootstrp3.cab | tr -cd / | wc -c
Leider gibt es die folgende Meldung mit der Bash aus.exe-Shell
Usage:
tr [-cs] string1 string2
tr -s[-c] string1
tr -d[-c] string1
tr -ds[-c] string1 string2
Es scheint, dass sich die beiden Schalen unterschiedlich verhalten, aber beide scheinen die gleiche Art von Schale zu sein, denn wenn ich echo $0
, schlag.exe-Ausgaben bash
und Minze.exe-Ausgaben -bash
.
Ich habe den Befehl auch mit der Bourne-Shell ausprobiert (sh.exe), aber es gibt die gleiche Nachricht aus wie bei der Bash.exe-Shell.
Weiß jemand, wie ich den Befehl mit dem sh zum Laufen bringen kann.exe oder bash.exe-Shell?Und weiß jemand, warum sich die beiden Bash-Shells unterschiedlich verhalten?
Lösung
Sie können das Gleiche tun mit sed
und wc
:
echo -n ./bootstrp3.cab | sed 's![^/]!!g' | wc -c