2015-07-16 6 views
1

Как я могу обрезать последние n символов из строки в bash?bash truncate last n символов строки

В Python я хотел бы использовать

new_string = var_name[:-n] 

Есть простое решение, как это в Баш?

+0

[проверить] (HTTP://unix.stackexchange.com/questions/144298/delete-the-last-character-of-a-string-using-string-manipulation-in-shell-script) –

ответ

2

Вы можете сделать это в строковых функциях BASH:

s='123456' 
echo "${s:0: -2}" 
1234 

echo "${s:0: -3}" 
123 
+1

Ницца! Обратите внимание, что '$ {s :: - 3}' эквивалентен. То есть '0' является значением по умолчанию второго блока. – fedorqui

+0

Ах спасибо @fedorqui, я не знал этого трюка. – anubhava

+0

как $ {s :: - 2}, так и $ {s: 0: -2} работают в командной строке, но когда я помещаю их в скрипт bash, он возвращает ошибку «bash_test.sh: строка 5: -2: подстрока выражение <0 " – lafferc

0

Использование СЭД,

var=$(sed 's/.{n}$//' <<< "$str") 
0

вы можете использовать СЭД, как это:

$ var=lknjn 
$ newvar=$(echo $var |sed 's/n$//g') 
$ echo $newvar 
lknj