将两个或多个空格更改为单个分号

我正在努力格式化一个db2查询。 我想用分号replace一个string中的两个或多个空格。 我知道如何去做所有的空间,问题是如何改变只有两个或更多的空间:P

这里是一个例子,我想改变这个:

john doe 1900-01-01 california 

 john doe;1900-01-01;california 

问题是我在名称字段中有一个空格,所以我不能使用简单的tr命令。 在我的实际工作中,任何领域都可以有一个单一的空间。

非常感谢您的帮助! 提前致谢!

 $ sed 's/ */;/g' john doe 1900-01-01 california john doe;1900-01-01;california one space two spaces three spaces one space;two;spaces;three;spaces 

尝试使用

 sed -i 's/ */\;/g' your-file 

这将用一个替换每2个或更多的空间; 在你通过它的文件中。

最好的方法是用正确的分隔符(即“;”)查询数据库表。 看看你是否可以这样做。 除此以外,

 $ echo "john doe 1900-01-01 california" | sed 's/ /;/2g' john doe;1900-01-01;california 

如果名字有三个或更多的话,这将会中断。