Como extrair string entre a primeira ocorrência de: e um cólon

0

Eu tenho um arquivo longo que preciso reprocessar para inseri-lo no banco de dados. Os dados do arquivo estão neste formato:

Error for: 111.222.55.1,[ZXX: Error message] some text (_xxx.c:833)
Error for: 198.243.55.25,[ZXX: Error message] some text (_xxx.c:833)
Unexpected error for: 198.245.175.52,[Errno 104] some text here

Preciso reorganizar o arquivo para ficar assim:

Error for,111.222.55.1,[ZXX: Error message] some text (_xxx.c:833)
Error for,198.243.55.25,[ZXX: Error message] some text (_xxx.c:833)
Unexpected error for,198.245.175.52,[Errno 104] some text here

1) Por favor, note que há um espaço após a palavra for: 2) Que o caractere : pode ocorrer mais de uma vez em uma linha, como você vê no exemplo. Então eu preciso substituir a primeira ocorrência após o for:[space]

Eu pensei em sed para pesquisar e substituir. Mas não sabe como limitar a busca pela posição que eu quero?

    
por user9371654 04.10.2018 / 21:26

2 respostas

3

usando o SED:

sed -e 's/: /,/' file > newFile

Error for,111.222.55.1,[ZXX: Error message] some text (_xxx.c:833)
Error for,198.243.55.25,[ZXX: Error message] some text (_xxx.c:833)
Unexpected error for,198.245.175.52,[Errno 104] some text here
  • Por padrão, sed substitui a primeira ocorrência.
por 04.10.2018 / 21:29
1

awk solution:

 awk '{sub(/: /,",")}1' file


Error for,111.222.55.1,[ZXX: Error message] some text (_xxx.c:833)
Error for,198.243.55.25,[ZXX: Error message] some text (_xxx.c:833)
Unexpected error for,198.245.175.52,[Errno 104] some text here
    
por 04.10.2018 / 21:32