如何用 'sed' 剪切字符串的前缀?

How to cut prefix of string with 'sed'?

考虑以下几行:

prefix1.value[TAB]someString
prefix2.anotherVal[TAB]anotherString
val[TAB]String
pref.stuff[TAB]stuff
dontTouch[TAB]stuff

我想要结果

value[TAB]someString
anotherVal[TAB]anotherString
val[TAB]String
stuff[TAB]stuff
dontTouch[TAB]stuff

所以我想剪掉 prefix. 如果有的话。正则表达式的工作方式是第一个匹配最长,所以我无法创建一个工作程序。是否可以使用单个 sed 程序完成此任务?

我的解决方案无法正常工作: sed 's/^[^\t\.]*\.\?\([^\t\.]\+\)\t\(.*\)/\t/'

这只匹配前缀,并将其替换为空字符串。

sed 's/^[^\t\.]*\.//'

如果可能只有一个点,试试这个:

sed -e 's/^.*\.//' file

如果直到第一个点

sed 's/^[^.]*\.//' YourFile

如果直到最后一个点

se 's/.*\.//' YourFile

由您定义前缀类型