The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Вывод по шаблону, !*! 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/'

    так как-то короче, да и понятнее, а то куча вопросительных знаков воспринимается плохо
    и порождает дополнительные вопросы (мля, каламбурчик ))




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру