Como copiar uma parte de uma linha para outra posição

2

Eu tenho cerca de 100 declarações impressas em um arquivo como este:

printf("%f \n\n",row1.req_pnttime);

Eu quero copiar o nome da variável dentro da string para que fique assim

printf("row1.req_pnttime: %f \n\n",row1.req_pnttime);

Alguém pode me ajudar a fazer isso?

PS-O comprimento do nome da variável é diferente para cada declaração impressa, então eu preciso de uma maneira genérica para fazer isso.

    
por Vivek V K 07.04.2014 / 08:04

1 resposta

7
sed 's/\(.*("\)\(.*,\)\(.*\))/: )/' /path/to/input.txt >/path/to/output.txt

Explicação

  • O formato geral é sed 's/find/replace/' . ou seja, encontre uma expressão e substitua-a.
  • \( ... \) estes são grupos de captura. Portanto, qualquer coisa que combine entre eles é "capturada" em uma variável e pode ser recuperada na peça de substituição, com , , , etc.
  • Então, aqui, encontre \(.*("\)\(.*,\)\(.*\)) .
    • Capturando o grupo 1: .*(" . Capture desde o começo até qualquer coisa que termine com ("
    • Capturando o grupo 2: .*, . De # 1, capture até , .
    • Capturando o grupo 3: .* . Capture até (mas não incluindo) ) .
  • Em seguida, substitua pelos grupos de captura e formatação adicional : ) .
por Sparhawk 07.04.2014 / 09:11