Подтвердить что ты не робот

Как удалить пространство из строки?

В ubuntu bash script как удалить пробел из одной переменной

Строка

будет

   3918912k 

Хотите удалить все пустое пространство.

4b9b3361

Ответ 2

Инструменты sed или tr сделают это для вас, заменив пробелы ничем.

sed 's/ //g'

tr -d ' '

Пример:

$ echo "   3918912k " | sed 's/ //g'
3918912k

Ответ 3

Вы также можете использовать echo для удаления пробелов, либо в начале, либо в конце строки, но также повторяя пробелы внутри строки.

$ myVar="    kokor    iiij     ook      "
$ echo "$myVar"
    kokor    iiij     ook      
$ myVar=`echo $myVar`
$
$ # myVar is not set to "kokor iiij ook"
$ echo "$myVar"
kokor iiij ook

Ответ 4

Поскольку вы используете bash, самым быстрым способом будет:

shopt -s extglob # Allow extended globbing
var=" lakdjsf   lkadsjf "
echo "${var//+([[:space:]])/}"

Это быстрее, потому что он использует встроенные функции вместо запуска дополнительных процессов.

Однако, если вы хотите сделать это с помощью POSIX-совместимого способа, используйте sed:

var=" lakdjsf   lkadsjf "
echo "$var" | sed 's/[[:space:]]//g'

Ответ 5

Смешной способ удалить все пробелы из переменной - использовать printf:

$ myvar='a cool variable    with   lots of   spaces in it'
$ printf -v myvar '%s' $myvar
$ echo "$myvar"
acoolvariablewithlotsofspacesinit

Оказывается, он немного эффективнее, чем myvar="${myvar// /}", но не безопасен в отношении глобусов (*), которые могут появляться в строке. Поэтому не использовать его в производственном коде.

Если вы действительно действительно хотите использовать этот метод и действительно беспокоитесь о том, что вы делаете глобусы (и вам действительно нужно), вы можете использовать set -f (который полностью отключает глобальное):

$ ls
file1  file2
$ myvar='  a cool variable with spaces  and  oh! no! there is  a  glob  *  in it'
$ echo "$myvar"
  a cool variable with spaces  and  oh! no! there is  a  glob  *  in it
$ printf '%s' $myvar ; echo
acoolvariablewithspacesandoh!no!thereisaglobfile1file2init
$ # See the trouble? Let fix it with set -f:
$ set -f
$ printf '%s' $myvar ; echo
acoolvariablewithspacesandoh!no!thereisaglob*init
$ # Since we like globbing, we unset the f option:
$ set +f

Я отправил этот ответ только потому, что это забавно, а не использовать его на практике.