用NULL替换文件中的2个或更多空格

时间:2014-02-25 12:54:57

标签: bash unix sed

使用sed,如何用NULL替换2个或更多空格?

输入

200 0 0  100      300    400 10

期望的输出

200 0 0100300400 10

5 个答案:

答案 0 :(得分:5)

您可以使用sed(这不是特定于GNU sed):

sed -r 's/[ ]{2,}//g' filename

或(没有-r):

sed 's/[ ]\{2,\}//g' filename

对于您的输入,这将产生:

200 0 0100300400 10

答案 1 :(得分:5)

这适用于任何sed,而不仅仅是GNU sed:

sed -e 's/   *//g'

答案 2 :(得分:4)

sed 's/  \+//g' INPUTFILE

将起作用(如果你有GNU sed)。

答案 3 :(得分:0)

在此发布以供参考,awk解决方案:

$ echo '200 0 0  100      300    400 10' | awk '{gsub(/  +/,"")}1'
200 0 0100300400 10

答案 4 :(得分:0)

Pure Bash。在脚本中,您可以使用参数替换:

str="200 0 0  100      300    400 10"

shopt -s extglob

str=${str// +( )/}
echo  "$str"

200 0 0100300400 10

替换${str// +( )/}删除所有空格,后跟至少一个空格。