Вывод по шаблону, MRDK, 12-Июл-17, 12:58 [смотреть все]Помогите пожалуйста, не могу разобраться, как вывести данные по шаблону. Дано: после применения awk -F ',' '{print $1}' имеется поток данных вида 17071210.log:31:51.761007 17071210.log:31:51.761011 17071210.log:31:51.761013 17071210.log:31:51.761016 17071210.log:31:51.761020 17071210.log:31:51.761022 17071210.log:31:51.761026 (год+месяц+день+час.log:мин:сек.мс) Надо преобразовать в формат час:мин регулярка для этого (\d\d(?=\.log\:)).*((?<=\.log\:)\d\d) где у нас в первой переменной окажется час, во второй - минуты. Как это вывести на экран? Шаблон sed 's/.*/регулярка/' выводит не результат работы, а само выражение
|
- Вывод по шаблону, Andrey Mitrofanov, 13:46 , 12-Июл-17 (1)
> Дано: > после применения awk -F ',' '{print $1}' имеется поток данных вида > 17071210.log:31:51.761007 > где у нас в первой переменной окажется час, во второй - минуты. > Как это вывести на экран?$ echo '17071210.log:31:51.761007,a,b,c' |awk -F ',' '{print $1}' 17071210.log:31:51.761007 $ echo '17071210.log:31:51.761007,a,b,c' |gawk -F ',' 'match($1,"([0-9][0-9])\\.log:([0-9][0-9])",aa){print aa[1],aa[2]}' 10 31 $ _ > Шаблон sed 's/.*/регулярка/' выводит
- Вывод по шаблону, MRDK, 14:16 , 12-Июл-17 (2)
>[оверквотинг удален] >> 17071210.log:31:51.761007 >> где у нас в первой переменной окажется час, во второй - минуты. >> Как это вывести на экран? > $ echo '17071210.log:31:51.761007,a,b,c' |awk -F ',' '{print $1}' > 17071210.log:31:51.761007 > $ echo '17071210.log:31:51.761007,a,b,c' |gawk -F ',' 'match($1,"([0-9][0-9])\\.log:([0-9][0-9])",aa){print > aa[1],aa[2]}' > 10 31 > $ _ >> Шаблон sed 's/.*/регулярка/' выводит спасибо
- Вывод по шаблону, _, 17:25 , 12-Июл-17 (3)
echo '17071210.log:31:51.761007,a,b,c' |sed 's/^.*\([0-9][0-9]\)\.log:\([0-9][0-9]\).*$/\1 \2/' 10 31
- Вывод по шаблону, михалыч, 19:45 , 12-Июл-17 (4)
> 17071210.log:31:51.761022 > 17071210.log:31:51.761026 > (год+месяц+день+час.log:мин:сек.мс) > Надо преобразовать в формат час:мин > регулярка для этого (\d\d(?=\.log\:)).*((?<=\.log\:)\d\d) > где у нас в первой переменной окажется час, во второй - минуты. > Как это вывести на экран?Это perl если уж с заглядыванием вперед и назад - то чуть рихтануть echo 17071210.log:31:51.761007 | perl -pe 's/.*(\d\d)(?:(?=\.log\:)).*(?:(?<=\.log\:))(\d\d).*/$1:$2/' но лучше как на sed уже показали echo 17071210.log:31:51.761007 | perl -pe 's/.*(\d\d)\.log\:(\d\d).*/$1:$2/' так как-то короче, да и понятнее, а то куча вопросительных знаков воспринимается плохо и порождает дополнительные вопросы (мля, каламбурчик ))
|