I have the following data.txt:
95 flour.
47 water.s
etc..
I need to remove everything after the period (.
) in the file to yield s
This is the simplest:
sed "s/\..*//"
And this is, I think, one of the best ways of doing it (better than pure bash or Python).
Either escape the .
with a backslash to get a literal .
, or use brackets to define a character class:
sed 's/\..*$//' data.txt > cleaned.txt
sed 's/[.].*$//' data.txt > cleaned.txt
You tried 's/\.*//'
, which is "zero or more literal dots", which is different from "literal dot followed by zero or more of anything", i.e. 's/\..*//'
. I also added a $
for good measure.
This seemed to work:
sed "s/[.].*//" data.txt > cleaned.txt
I would be interested to know how this can be done alternatively in bash and python, if anyone wouldn't mind sharing?
Thanks!