Here are some solutions:
> sub("^(.*)[.].*", "\\1", "abc.com.foo.bar") # 1 [1] "abc.com.foo" > sub("[.][^.]*", "", "abc.com.foo.bar") # 2 [1] "abc.foo.bar" > library(tools) > file_path_sans_ext("abc.com.foo.bar") # 3 [1] "abc.com.foo"
ADDED. As for your comment asking to remove the leading periods, the easiest way is to simply pass this to any of the above, where x is the input line:
sub("^[.]*", "", x)
To make any of them in one line:
> x <- c("abc.com.foo.bar", ".abc.com.foo.bar", ".vimrc") > > sub("^[.]*(.*)[.]?.*$", "\\1", x) # 1a [1] "abc.com.foo.bar" "abc.com.foo.bar" "vimrc" > > gsub("^[.]*|[.][^.]*$", "", x, perl = TRUE) # 2a [1] "abc.com.foo" "abc.com.foo" "vimrc" > > file_path_sans_ext(sub("^[.]*", "", x)) # 3s [1] "abc.com.foo" "abc.com.foo" "vimrc"
source share