Не могу вырезать последние X букв из строки [закрыто]

0
27.03.2019, 16:27
4 ответа

Вы уверены, что запускаете скрипт с правильной версией bash? Ваша линия Шебанга в порядке? Как насчет вызова скрипта с помощьюbash myscript.sh?

1
28.01.2020, 02:30

Это сработало:

v="aksdjfkajsdkfjakdf"
length=${#v}
v2=${v:0: length - 6}
-1
28.01.2020, 02:30

Использование отрицательной длины было добавлено в Bash 4.2:

${PARAMETER:OFFSET:LENGTH}: Negative LENGTH values are used as offset from the end of the string 4.2-alpha

И, похоже, у меня это работает с версиями Bash 4.2.53, 4.4.12 и 5.0.3. С любым из них я получаю:

$ s=123456; echo "${s::-2}"
1234
$ s=123456; echo "${s::-8}"
bash: -8: substring expression < 0

То есть это работает до тех пор, пока абсолютное значение отрицательной длины не превышает длину строки.

5
28.01.2020, 02:30

Я сделал следующим способом

v="ksdjfksjkjsdf"
echo $v| awk -F "" '{gsub("","\n",$0);print $0}'| sed '/^$/d'| sed -n '1,7p'| perl -pne g"/\n//g"

выход

 echo $v| awk -F "" '{gsub("","\n",$0);print $0}'| sed '/^$/d'| sed -n '1,7p'| perl -pne g"/\n//g"

ksdjfks
-1
28.01.2020, 02:30

Теги

Похожие вопросы