在目录中,我有几个带有以下符号的文件:
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'
然而,错误并没有改变。
知道我做错了吗?
正则表达式是如何不正确的?
我没有正确定义变量吗?
答案 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*
来删除空格,并将其替换为:
: