当我学习关于sed的命令时,我发现了这个我无法解决的问题。我想要处理的txt如下:
myBook:test yetongxue$ cat test.txt
def IsNonce_strSet(self):
"""
判断随机字符串是否存在
@return true 或 false
"""
return self._values.has_key('nonce_str')
这是我的命令和结果:
myBook:test yetongxue$ sed "s/return self._values.has_key\(\)/mark1 \1 mark2/g" test.txt
def IsNonce_strSet(self):
"""
判断随机字符串是否存在
@return true 或 false
"""
mark1 mark2('nonce_str')
我很困惑mark2的位置,它应该在(' nonce_str')之后。 像这样:
mark1(' nonce_str')mark2
任何人都可以解释一下吗?非常感谢!
此外,如何将正则表达式白化,以便只匹配字符串 nonce_str 。 我的命令是:
sed" s / return self._values.has_key('()')/ mark1 \ 1 mark2 / g"的test.txt
但它没有用。
答案 0 :(得分:4)
正则表达式\(\)
匹配并捕获sed
中的空字符串。
显然,您希望捕获一组文字括号及其间的文字?
sed ´s/return self\._values\.has_key\(([^()]*)\)/mark1 \1 mark2/'