I have a grep
puzzle that's eluding me: I'd like to remove the text following the final period in a collection of strings (i am using R, so perl
syntax is available).
For example, say the string is ABCD.txt
this grep
would return ABCD
, and if the text was abc.com.foo.bar
, it would return abc.com.foo
.
Any help greatfully appreciated (i don't think i can drink any more coffee!).
Here are a few solutions:
sub("^(.*)[.].*", "\\1", "abc.com.foo.bar") # 1
## [1] "abc.com.foo"
library(tools)
file_path_sans_ext("abc.com.foo.bar") # 3
## [1] "abc.com.foo"
ADDED. Regarding your comment asking to remove leading periods, simplest is to just feed this into any of the above where x
is the input string:
sub("^[.]*", "", x)
To do 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"
file_path_sans_ext(sub("^[.]*", "", x))
## [1] "abc.com.foo" "abc.com.foo" "vimrc"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With