Используя perl on linux, я пытаюсь проанализировать ввод из FIFO и обрезать части каждой строки и заменить некоторые из оставшихся символов - чтобы отформатировать его для утилиты командной строки, который будет вызываться, когда все отложенные строки в FIFO были изменены.Заменить первые вхождения x на каждую строку
Мой вход может выглядеть следующим образом:
[1466621350] PROCESS_SERVICE_CHECK_RESULT;rs301;Disk IOPS;0;No disks exceeds defined IOPS thresholds | sda=1.40;100;200 sdb=0.00;200;400 sdc=0.00;100;200 sdd=0.00;800;900 sde=0.00;800;900 sdf=0.40;200;3003
[1466621350] PROCESS_SERVICE_CHECK_RESULT;rs301a;Connectivity - Admin sessions;0;Connection OK |
[1466621350] PROCESS_SERVICE_CHECK_RESULT;rs301a;Uptime;0;Uptime ok - 253 days 07:53:49 |
[1466621350] PROCESS_SERVICE_CHECK_RESULT;rs301a;Volumes in pool;0;Number of volumes: 500 is OK | numvols=500
Первая часть строки - до первой точки с запятой должен быть удален - это даст мне:
rs301;Disk IOPS;0;No disks exceeds defined IOPS thresholds | sda=1.40;100;200 sdb=0.00;200;400 sdc=0.00;100;200 sdd=0.00;800;900 sde=0.00;800;900 sdf=0.40;200;3003
rs301a;Connectivity - Admin sessions;0;Connection OK |
rs301a;Uptime;0;Uptime ok - 253 days 07:53:49 |
rs301a;Volumes in pool;0;Number of volumes: 500 is OK | numvols=500
От этого я необходимо заменить первые 3 точки с запятой символами TAB.
Я не эксперт в регулярных выражениях Perl - так что я понятия не имею, как достичь желаемого результата.
Может ли кто-нибудь помочь мне? Какая должна быть строка замены переменных скрипта?
Я знаю точно, что это не работает, так как он заменяет все: запятой
$nsca_mystr=~s/\;/\t/g;