Com o GNU sed:
$ sed -Ee 's/([0-9]+) usec, ([0-9]+) usec.*/delayMicroseconds();\npulseIR();/' < data
delayMicroseconds(62640);
pulseIR(3500);
...
-E
informa sed
para usar expressões regulares estendidas (*) , o comando s/pattern/replacement/
executa uma operação de substituição de pesquisa sobre a linha atual ( sed
repete as instruções dadas para cada linha de entrada).
O padrão é ([0-9]+) usec, ([0-9]+) usec.*
, em que [0-9]
significa qualquer dígito, +
qualquer número do "átomo" anterior e (...)
salva ("capturas") o que foi correspondido. Portanto, ([0-9]+)
significa qualquer número de qualquer dígito e salva o resultado. As letras são correspondidas como estão e o% final .*
corresponde a qualquer número de caracteres, apenas para comer qualquer lixo possível no final da linha.
Na substituição,
e
são substituídos pelo conteúdo salvo dos grupos (...)
(mas os parênteses são literais aqui) e \n
significa os caracteres da nova linha (isso pode não funcionar em todos os sed
s).
(*) Veja Por que minha expressão regular funciona em X, mas não em Y? para a diferença entre os diferentes tipos de regex. Além disso, há vários tutoriais para sed
online. Sugiro encontrar um ou dois e brincar com ele, pelo menos para se familiarizar com o comando s///
.