如何使用sed将空白替换为一个空白?

如何使用sed将空白替换为一个空白?,sed,whitespace,Sed,Whitespace,使用 sed“s//[:blank:][]*//g“a>b 似乎不起作用。您需要将星号改为加号: sed "s/[[:blank:]]\+/ /g" a>b 或者使用与此意思相同的替代方案: sed "s/[[:blank:]][[:blank:]]*/ /g" a>b 或 此外,发布错误消息或行为与预期不同的精确方式更有帮助,因为“似乎不起作用”传达的信息很少。谢谢。我有点心烦意乱,无法理解突然出现了以前没有的空间@用户:由于*匹配模式的零次或多次出现,因此它可以匹配字符串的开

使用 sed“s//[:blank:][]*//g“a>b
似乎不起作用。

您需要将星号改为加号:

sed "s/[[:blank:]]\+/ /g" a>b
或者使用与此意思相同的替代方案:

sed "s/[[:blank:]][[:blank:]]*/ /g" a>b


此外,发布错误消息或行为与预期不同的精确方式更有帮助,因为“似乎不起作用”传达的信息很少。

谢谢。我有点心烦意乱,无法理解突然出现了以前没有的空间@用户:由于
*
匹配模式的零次或多次出现,因此它可以匹配字符串的开头和结尾。下面是一个将三个字符转换为五个字符的简单示例:
echo'a'| sed's/a*/x/g'
。我第一次尝试它时,如果我没记错的话,sed“s/[[:blank:]\+//g”a>b[pessed enter for\n]工作得很好,但现在我再次尝试,它是您提供的三个版本中唯一的一行,似乎没有任何效果。@user:恐怕我不明白。“您提供的三个版本中唯一的一行”是什么意思?您的输入示例是什么样的?我的版本能用吗?
sed "s/[[:blank:]]\{1,\}/ /g" a>b