使用 sed,如何用 NULL 替换 2 个或更多空格?
输入
200 0 0 100 300 400 10
期望的输出
200 0 0100300400 10
这将适用于任何sed,而不仅仅是GNU sed:
sed -e 's/ *//g'
你可以使用sed
(这不是GNU sed特有的):
sed -r 's/[ ]{2,}//g' filename
或(不带-r
):
sed 's/[ ]{2,}//g' filename
对于您的输入,这将产生:
200 0 0100300400 10
sed 's/ +//g' INPUTFILE
将工作(如果你有GNU sed)。
在这里发布以供参考,一个awk
的解决方案:
$ echo '200 0 0 100 300 400 10' | awk '{gsub(/ +/,"")}1'
200 0 0100300400 10
Pure Bash。在脚本中,您可以使用参数替换:
str="200 0 0 100 300 400 10"
shopt -s extglob
str=${str// +( )/}
echo "$str"
200 0 0100300400 10
替换${str// +( )/}
删除所有空格,后跟至少一个空格。