Команда TR вызывает проблемы в Cygwin Bash.exe Shell, но работает в Mintty.exe
Вопрос
Я использую Windows с cygwin.Следующая команда должна выводить количество вхождений «/» в строке «./bootstrp3.cab».Он работает, когда я использую оболочку и выходы mintty.exe "1":
echo ./bootstrp3.cab | tr -cd / | wc -c
.
К сожалению, он выводит следующее сообщение с помощью оболочки bash.exe
Usage:
tr [-cs] string1 string2
tr -s[-c] string1
tr -d[-c] string1
tr -ds[-c] string1 string2
.
Кажется, что два раковины ведут себя по-разному, но они оба, кажется, одинаковы раковины, потому что когда I GensacodiceTacodCode, Bash.exe выходы echo $0
и Mintty.exe выводы Renacodicetacode.
Я также попробовал команду с оболочкой Bourne (SH.exe), но он выводит одно и то же сообщение, что и с оболочкой Bash.exe.
Кто-нибудь знает, как я могу получить команду, работающую с Sh.exe или Bash.exe Shell?И кто-то знает, почему два раковины Bash ведут себя по-разному?
Решение
Вы можете сделать то же самое, используя sed
и wc
:
echo -n ./bootstrp3.cab | sed 's![^/]!!g' | wc -c
.