如何删除变量中的额外空格HEAD
?
HEAD=" how to remove extra spaces "
Run Code Online (Sandbox Code Playgroud)
结果:
how to remove extra spaces
Run Code Online (Sandbox Code Playgroud)
jma*_*man 25
试试这个:
echo "$HEAD" | tr -s " "
Run Code Online (Sandbox Code Playgroud)
或者您可能希望将其保存在变量中:
NEWHEAD=$(echo "$HEAD" | tr -s " ")
Run Code Online (Sandbox Code Playgroud)
更新
要删除前导和尾随空格,请执行以下操作:
NEWHEAD=$(echo "$HEAD" | tr -s " ")
NEWHEAD=${NEWHEAD%% }
NEWHEAD=${NEWHEAD## }
Run Code Online (Sandbox Code Playgroud)
Gur*_*uru 24
使用awk:
$ echo "$HEAD" | awk '$1=$1'
how to remove extra spaces
Run Code Online (Sandbox Code Playgroud)
gle*_*man 12
利用不引用变量的分词效果
$ HEAD=" how to remove extra spaces "
$ set -- $HEAD
$ HEAD=$*
$ echo ">>>$HEAD<<<"
>>>how to remove extra spaces<<<
Run Code Online (Sandbox Code Playgroud)
如果您不想使用位置参数,请使用数组
ary=($HEAD)
HEAD=${ary[@]}
echo "$HEAD"
Run Code Online (Sandbox Code Playgroud)
不引用的一个危险的副作用是文件名扩展将起作用.所以先关掉它,然后重新启用它:
$ set -f
$ set -- $HEAD
$ set +f
Run Code Online (Sandbox Code Playgroud)
这匹马还没死!让我们继续打它!*
其他人已经提到read
,但由于使用不带引号的扩展可能会导致不良扩展,所以使用它的所有答案都可以被视为或多或少相同.你可以做到
set -f
read HEAD <<< $HEAD
set +f
Run Code Online (Sandbox Code Playgroud)
或者你可以做到
read -a HEAD <<< "$HEAD"
HEAD="${HEAD[*]}"
Run Code Online (Sandbox Code Playgroud)
$ shopt -s extglob
$ HEAD="${HEAD//+( )/ }" HEAD="${HEAD# }" HEAD="${HEAD% }"
$ printf '"%s"\n' "$HEAD"
"how to remove extra spaces"
Run Code Online (Sandbox Code Playgroud)
*没有马实际受到伤害 - 这只是一个隐喻,可以为一个简单的问题获得六个+不同的答案.
这是我用sed做的方法:
string=' how to remove extra spaces '
echo "$string" | sed -e 's/ */ /g' -e 's/^ *\(.*\) *$/\1/'
=> how to remove extra spaces # (no spaces at beginning or end)
Run Code Online (Sandbox Code Playgroud)
第一个sed表达式用一个空格替换多于1个空格的任何组,第二个表达式删除任何尾随或前导空格.