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

4
使用sed "s/[[:blank:]]*/ /g" a>b似乎不起作用。
1个回答

6

您需要将星号更改为加号:

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

或者使用一个意思相同的替代方案:
sed "s/[[:blank:]][[:blank:]]*/ /g" a>b

或者

sed "s/[[:blank:]]\{1,\}/ /g" a>b

另外,如果能够发布错误消息或者明确行为与预期不同的方式会更有帮助,因为“似乎无法正常工作”传达的信息非常少。


我第一次尝试时,如果我没记错的话,是这样写的:sed "s/[[:blank:]]+/ /g" a>b - user490735
@user:恐怕我不明白。你所说的“你提供的三个版本中唯一的一行”是什么意思?你的输入示例是什么样子的?我的任何一个版本都有效吗? - Dennis Williamson
a bv input aaa endinput - user490735
@user:sed的哪个版本? - Dennis Williamson
@user:我有gnuwin32的sed 4.2版本,所有三个sed命令都可以正常工作。 - Dennis Williamson
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接