2012-07-03 3 views
0

Я хочу построить регулярное выражение, которое будет для каждой строки ввода текста, которую я даю ему, выбрать, что XX, YY и ZZ, предпочтительно возвращать значения мне в переменных, которые я могу добавить или поместить в массив или что угодно.Регулярное выражение для «Некоторый текст, повторяющийся: XXhYYmZZs»

Дело в том, что я довольно новичок как в регулярных выражениях, так и в сценариях оболочки (я буду использовать csh для этой задачи). Поэтому мне было интересно, как это сделать с csh-регулярным выражением, и если это отличается от выражения perl regex.

Просто повторить шаблон выглядит следующим образом:

Some text repeating: 23h04m31s 
... 
Some text repeating: 12h13m22s 
... 

EDIT - мой сценарий нужно будет искать в определенные файлы для этого. Я думаю, что могу использовать инструмент GREP в моем скрипте csh с правильным регулярным выражением.

Благодарим за помощь!

+0

Если вы действительно новичок в сценариях оболочки, вы действительно должны пересмотреть использование 'csh'. 'csh' is * not * подходит для сценариев, и вы сделаете одолжение, чтобы избежать этого. –

+0

расскажите, что моему работодателю lol – JDS

ответ

2
while read line 
do 
    time=${line##*: } 
    hours=${time%h*} 
    minutes=${time#*h} 
    minutes=${minutes%m*} 
    seconds=${time#*m} 
    seconds=${seconds%s*} 

    do_something_with "$hours" "$minutes" "$seconds" 
done < yourinputfile 
+0

Просто увидел, что вы хотите 'csh', но выше это' sh'. –

+0

Вы знакомы с незначительными различиями? – JDS

+0

Нет, извините, я использую только 'sh' - это то, что вам нужно знать в любом случае и, безусловно, наиболее широко используется и, как говорят некоторые люди, по какой-то причине. Но я уверен, что различия не совсем незначительные. –

Смежные вопросы