首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在bash中删除多余的空格?

如何在bash中删除多余的空格?
EN

Stack Overflow用户
提问于 2012-10-27 02:23:59
回答 6查看 56.1K关注 0票数 33

如何在变量HEAD中删除多余的空格

代码语言:javascript
复制
HEAD="    how to  remove    extra        spaces                     "

结果:

代码语言:javascript
复制
how to remove extra spaces
EN

回答 6

Stack Overflow用户

发布于 2012-11-27 19:49:09

使用awk:

代码语言:javascript
复制
$ echo "$HEAD" | awk '$1=$1'
how to remove extra spaces
票数 28
EN

Stack Overflow用户

发布于 2015-05-06 11:30:29

这匹马还没有完全死掉:让我们继续击败它吧!*

读入数组

Other people提到了read,但由于使用未引用的扩展可能会导致不希望的扩展,因此可以认为使用它的所有答案或多或少都是相同的。You could do

代码语言:javascript
复制
set -f
read HEAD <<< $HEAD
set +f

或者你可以这样做

代码语言:javascript
复制
read -rd '' -a HEAD <<< "$HEAD"  # Assuming the default IFS
HEAD="${HEAD[*]}"

带参数扩展的扩展全局搜索

代码语言:javascript
复制
$ shopt -s extglob
$ HEAD="${HEAD//+( )/ }" HEAD="${HEAD# }" HEAD="${HEAD% }"
$ printf '"%s"\n' "$HEAD"
"how to remove extra spaces"

*实际上没有马受到伤害- this只是一个隐喻,让six+对一个简单的问题有不同的答案。

票数 9
EN

Stack Overflow用户

发布于 2012-10-27 03:50:22

下面是我如何使用sed来做到这一点:

代码语言:javascript
复制
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)

第一个sed表达式将任何超过1个空格的组替换为一个空格,第二个表达式删除所有尾随或前导空格。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13092360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档