Sed删除单词和分号之间的空格

时间:2017-11-10 17:47:46

标签: regex sed

在目录中,我有几个带有以下符号的文件:

myKey :
mySecondKey :
blabla :

我想在分号前删除空格,以便它们变成:

myKey:
mySecondKey:
blabla:

我试过了:

sed -e 's/([a-z]*) :/\1:/g' .

但我得到了:

": \1 not defined in the RE

我也尝试过:

sed -e 's/([a-z]*)\ \:/\1\:/g'

然而,错误并没有改变。

知道我做错了吗?

正则表达式是如何不正确的?

我没有正确定义变量吗?

3 个答案:

答案 0 :(得分:1)

为什么不简单:

sed -e 's/ :/:/g'

使用不敏感的案例:

sed -e 's/([a-z]*) :/\1:/ig'

sed -e 's/([a-zA-Z]*) :/\1:/g'

答案 1 :(得分:1)

您有较低和大写字符的字符,因此您需要将字符类定义为:

sed -E 's/^([a-zA-Z]+)\ :/\1:/g'
#               -^-

另外使用锚点(这里是^),它给出了给定示例的结果:

myKey:
mySecondKey:
blabla:

答案 2 :(得分:1)

您可以通过查找单词之间的所有空格({" myKey")和\s*来删除空格,并将其替换为:

: