Это будет работать для любого количества столбцов:
sed 's/_[0-9.]\+//g'
Вы не используете bash
, или вы используете более старую версию bash
, или оболочку, которая не понимает расширения фигурных скобок.
Наиболее вероятное объяснение состоит в том, что ваш эмулятор терминала работает /bin/sh
или какая-то оболочка меньшего размера (, которая, как мы надеемся, по-прежнему в основном совместима с POSIX ).
Вbash
(и любой другой оболочке, которая поддерживает раскрытие фигурных скобок ), ваш явный цикл for -может быть заменен неявным циклом:
printf 'Welcome %d\n' {1..4}
или
printf 'Welcome %d\n' $(seq 4)
если у вас нет раскрытия скобок, но есть seq
.
Вы используете /bin/sh (оболочку), а не /bin/bash.
$ /bin/sh -c 'for i in {1..4}; do echo "Welcome $i";done'
Welcome {1..4}
Теперь попробуйте с bash:
$ /bin/bash -c 'for i in {1..4}; do echo "Welcome $i";done'
Welcome 1
Welcome 2
Welcome 3
Welcome 4
Если вы предпочитаете оболочку, то сделайте так, как Nikolas пишет:
for i in $(seq 4); do echo "Welcome $i" ; done
но я бы посоветовал использовать Bash.
Как сказал Кусалананда , либо вы не используете bash, либо версия не очень свежая . Я тестировал следующее в более старых версиях bash (, может быть, до того, как он сформировал свою идиому? )и работает с sh
тоже:
for i in `seq 1 4`;do echo "Welcome $i";done
Это должно сработать.
Если вы используете это приложение:Эмулятор терминала Android , «тогда это эмулятор терминала для связи со встроенной -оболочкой Android». То есть, если вы не устанавливали свою собственную версию bash вручную (, ваше устройство должно быть рутировано для этого. Вы рутировали свое устройство? ), значит у вас оболочка Android по умолчанию, а не bash. Поэтому вы можете использовать только набор функций оболочки Android и не можете использовать расширенный синтаксис и функции bash, например:{1..4}
.
Немного информации, которую я нашел.