如何删除变量中的额外空格?
VAR=" Eget ac vel volutpat dic tumst est dui adipiscing "
Correct result: VAR="Eget ac vel volutpat dic tumst est dui adipiscing"
有超过16,000,000个待编辑; sed
太慢了!
!!! E D I T !!!
字符串OK!谢谢大家
BUT
数组问题中的文字,差距仍然存在: - (
ITM=(" Eget ac vel volutpat | Vel volutpat dic tumst "
" Vestibulum laoreet a semper |orttitor eu laoreet justo congue ")
IFS=$'|'
for (( i=0 ; i<16000000 ; i++ ))
do
AAA=( ITM[$i] )
B=${AAA[0]} # " Eget ac vel volutpat "
C=${AAA[1]} # " Vel volutpat dic tumst "
done
答案 0 :(得分:2)
您不需要为此生成子shell。只需使用bash的内置模式替换。
[ghoti@pc ~]$ shopt -s extglob
[ghoti@pc ~]$ VAR=" Eget ac vel volutpat dic tumst est dui adipiscing "
[ghoti@pc ~]$ VAR=${VAR//+( )/ }
[ghoti@pc ~]$ echo "$VAR"
Eget ac vel volutpat dic tumst est dui adipiscing
[ghoti@pc ~]$ VAR=${VAR#+( )}
[ghoti@pc ~]$ echo "$VAR"
Eget ac vel volutpat dic tumst est dui adipiscing
[ghoti@pc ~]$
答案 1 :(得分:0)
只需删除引号,例如:
$ VAR=" Eget ac vel volutpat dic tumst est dui adipiscing "
$ echo $VAR
Eget ac vel volutpat dic tumst est dui adipiscing
$ echo "$VAR"
Eget ac vel volutpat dic tumst est dui adipiscing
$
如果您愿意:
$ VAR=" Eget ac vel volutpat dic tumst est dui adipiscing "
$ VAR="$(echo $VAR)"
$ echo "$VAR"
Eget ac vel volutpat dic tumst est dui adipiscing
此行为称为分词。
注意强>
如评论中所述,只有在您知道变量不包含*
等特殊字符时才应使用此功能。
答案 2 :(得分:0)
Shell并没有真正设置为进行大规模数据处理,甚至处理就像折叠空间一样简单。但这是一个不使用sed
VAR=" Eget ac vel volutpat dic tumst est dui adipiscing "
VAR=$(echo $VAR)
此代码将VAR设置为原始var的折叠版本。您可以通过执行以下内容来查看:
echo "$VAR"
结果:
Eget ac vel volutpat dic tumst est dui adipiscing