使用sed,如何用NULL替换2个或更多空格?
输入
200 0 0 100 300 400 10
期望的输出
200 0 0100300400 10
答案 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// +( )/}
删除所有空格,后跟至少一个空格。