我有一个字符串
test:growTest:ret
使用sed我只会删除test:获取:
growTest:ret
我试过
sed '0,/RE/s/^.*://'
但它只给了我
ret
有什么想法吗?
由于
答案 0 :(得分:5)
将正则表达式^.*:
修改为^[^:]*:
你需要的只是.*
构造不会消耗你的分隔符 - 冒号。要执行此操作,请将匹配任意字符.
替换为否定括号:[^abc]
,以匹配除之外的任何字符。
另外,不要混淆两个回旋^
,因为它们有不同的含义:第一个匹配字符串的开头,第二个意味着否定括号。
答案 1 :(得分:1)
如果我理解了您的问题,您希望test:growTest:ret
之类的字符串成为growTest:ret
。
您可以使用:
sed -i 's/test:(.*$)/\1/'
我意味着就地编辑。
s / one / two /用 two 替换 one 的出现。
因此,将“test:(。* $)”替换为“\ 1”。其中\ 1是第一组的内容,这是正则表达式在大括号内匹配的内容。
“test:(。* $)”匹配“test:”的第一次出现,然后将其他所有内容放到行的末尾直到大括号。在sed命令之后,大括号的内容仍然存在。
答案 2 :(得分:1)
^.*:
将匹配test:growTest:
以外的test:
。