I'm trying to extract the time from a string using bash, and I'm having a hard time figuring it out.
My string is like this:
US/Central - 10:26 PM (CST)
And I want to extract the 10:26
part.
Anybody knows of a way of doing this only with bash - without using sed, awk, etc?
Like, in PHP I would use - not the best way, but it works - something like:
preg_match( ""(\d{2}\:\d{2}) PM \(CST\)"", "US/Central - 10:26 PM (CST)", $matches );
Thanks for any help, even if the answer uses sed or awk
If your string is
foo="US/Central - 10:26 PM (CST)"
then
echo "${foo}" | cut -d ' ' -f3
will do the job.
echo "US/Central - 10:26 PM (CST)" | sed -n "s/^.*-\s*\(\S*\).*$/\1/p"
-n suppress printing
s substitute
^.* anything at the beginning
- up until the dash
\s* any space characters (any whitespace character)
\( start capture group
\S* any non-space characters
\) end capture group
.*$ anything at the end
\1 substitute 1st capture group for everything on line
p print it
Quick 'n dirty, regex-free, low-robustness chop-chop technique
string="US/Central - 10:26 PM (CST)"
etime="${string% [AP]M*}"
etime="${etime#* - }"
Source: Stackoverflow.com