Próbuję wydobyć czas z łańcucha za pomocą basha i trudno mi to rozgryźć.
Mój ciąg wygląda tak:
US/Central - 10:26 PM (CST)
Chcę wyodrębnić 10:26
część.
Czy ktoś zna sposób na zrobienie tego tylko za pomocą basha - bez używania seda, awk itp.?
Na przykład w PHP użyłbym - nie jest to najlepszy sposób, ale działa - coś takiego:
preg_match( ""(\d{2}\:\d{2}) PM \(CST\)"", "US/Central - 10:26 PM (CST)", $matches );
Dzięki za wszelką pomoc, nawet jeśli w odpowiedzi użyto sed lub awk
sed
wersja, ale chciałem ostrzec innych, żesed
niekoniecznie wymagają+
modyfikatora. Jednym ze sposobów obejścia tego problemu jest użycie{1, }
modyfikatora, aby dopasować jeden lub więcej.źródło
-n
następnie żądasz ponownego drukowania/p
? Czy nie byłoby to samo, gdyby pominąć-n
flagę i/p
dyrektywę? Dzięki.Szybka i brudna, wolna od wyrażeń regularnych, mało solidna technika chop-chop
źródło
| read zone dash time apm zone
też działaJeśli twój ciąg to
następnie
wykona robotę.
źródło
cut -c14-18
oczywiście tylko tak długo, jak pozycja znaku się nie zmienia. co nie powinno się zdarzyć, jeśli strefa czasowa została ustalona.