如何从字符串中删除的空间? [重复](How to remove space from stri

2019-08-03 10:26发布

这个问题已经在这里有一个答案:

  • 如何从猛砸可变剪切的空白? 42个回答

在Ubuntu bash脚本如何从一个变量中除去空间

字符串会

   3918912k 

要删除所有空格。

Answer 1:

尝试在shell这样做:

s="  3918912k"
echo ${s//[[:blank:]]/}

使用参数扩展 (这是一个非POSIX功能)

[[:blank:]]是一个正则表达式POSIX类(删除空格,制表符...),见http://www.regular-expressions.info/posixbrackets.html



Answer 2:

该工具sedtr会为你做这个通过交换白白空白

sed 's/ //g'

tr -d ' '

例:

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


Answer 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


Answer 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'


Answer 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's 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

我张贴了这个答案,只是因为它很有趣,不是在实践中使用它。



文章来源: How to remove space from string? [duplicate]
标签: bash shell