J'essaie d'extraire le temps d'une chaîne en utilisant bash, et j'ai du mal à le comprendre.
Ma chaîne est comme ça:
US/Central - 10:26 PM (CST)
Et je veux extraire la 10:26
pièce.
Quelqu'un connaît un moyen de faire cela uniquement avec bash - sans utiliser sed, awk, etc.?
Comme, en PHP, j'utiliserais - pas la meilleure façon, mais cela fonctionne - quelque chose comme:
preg_match( ""(\d{2}\:\d{2}) PM \(CST\)"", "US/Central - 10:26 PM (CST)", $matches );
Merci pour toute aide, même si la réponse utilise sed ou awk
sed
version mais je voulais avertir les autres quised
ne prennent pas nécessairement de+
modificateur. Une façon de contourner le{1, }
problème consiste à utiliser un modificateur pour en faire correspondre un ou plusieurs.la source
-n
puis demandez à nouveau l'impression avec/p
? Ne serait-ce pas la même chose d'omettre le-n
drapeau et d'omettre la/p
directive? Merci.Technique de hachage rapide et sale, sans regex et de faible robustesse
la source
| read zone dash time apm zone
fonctionne aussiSi votre chaîne est
puis
fera le travail.
la source
cut -c14-18
bien sûr seulement tant que la position du caractère ne change pas. ce qui ne devrait pas arriver si le fuseau horaire est fixe.