微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux-在bash中删除长度小于2的单词

我在CentOS 5.5上使用bash.我有一个用空格分隔的字符串,并且该字符串仅包含字母和数字,并且此字符串可能有多余的空间,例如,“单词”和“字符串”之间有多个空格:

$exmple= "This is a lovey 7 words   string"
@H_502_7@

我想删除长度小于2的单词,在此示例中,需要删除单词“ a”和“ 7”.并删除所有多余的空间,一个单词和另一个单词之间只有一个空格.

因此字符串变为:

"This is lovey words string"
@H_502_7@

解决方法:

编辑(基于ennuikiller的sed答案)

使用纯Bash:

newstring=${exmple// ? / }   # remove one character words
@H_502_7@

要规范空白:

read newstring <<< $newstring
@H_502_7@

要么

shopt -s extglob
newstring=${newstring//+( )/ }
@H_502_7@

原版的:

exmple="This is a lovey 7 words   string"
for word in $exmple
do
    if (( ${#word} >= 2 ))
    then
        newstring+=$sp$word
        sp=' '
    fi
done
@H_502_7@
                
                                 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐