How to remove space from string?
本问题已经有最佳答案,请猛点这里访问。
在ubuntu bash脚本中如何从一个变量中删除空格
字符串将是
1 | 3918912k |
想要删除所有空白区域。
工具
例:
1 2 | $ echo" 3918912k" | sed 's/ //g' 3918912k |
尝试在shell中执行此操作:
1 2 | s=" 3918912k" echo ${s//[[:blank:]]/} |
这使用参数扩展(这是一个非posix功能)
由于您使用bash,最快的方法是:
1 2 3 | shopt -s extglob # Allow extended globbing var=" lakdjsf lkadsjf" echo"${var//+([[:space:]])/}" |
它是最快的,因为它使用内置函数而不是启动额外的进程。
但是,如果要以符合POSIX的方式执行此操作,请使用
1 2 | var=" lakdjsf lkadsjf" echo"$var" | sed 's/[[:space:]]//g' |
您还可以使用
1 2 3 4 5 6 7 8 | $ 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 |
从变量中删除所有空格的一种有趣方法是使用printf:
1 2 3 4 | $ myvar='a cool variable with lots of spaces in it' $ printf -v myvar '%s' $myvar $ echo"$myvar" acoolvariablewithlotsofspacesinit |
事实证明它比
如果你真的真的想要使用这种方法而且真的很担心全局事物(你真的应该),你可以使用
1 2 3 4 5 6 7 8 9 10 11 12 13 | $ 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 |
我发布这个答案只是因为它很有趣,而不是在实践中使用它。