problema com sed dentro de sed

0

Estou tentando analisar uma string dentro de um comando sed, mas estou recebendo erros.

sed -e "/pd begin $(echo 3:1I:1:1|sed 0,/:/{s/:/' '/})",/pd end $(echo 3:1I:1:1|sed 0,/:/{s/:/' '/})/p /tmp/hp-raid-data-harvester.out

Eu preciso substituir o primeiro ':' da string "3: 1I: 1: 1". Tem que estar em uma linha e não pode ser alterado antes. A string vem do banco de dados com a string $ 1.

arquivo hp-raid-data tem dentro dessas linhas

### pd begin 3 2I:1:1 ###

Smart Array P410 in Slot 0

   array B

      physicaldrive 2I:1:1
         Port: 2I
         Box: 1
         Bay: 4
         Status: OK
         Drive Type: Data Drive
         Interface Type: SATA
         Size: 3 TB
         Rotational Speed: 7200
         Firmware Revision: CC4H
         Serial Number:             Z1F21GLG
         Model: ATA     ST3000DM001-9YN1
         SATA NCQ Capable: True
         SATA NCQ Enabled: True
         Current Temperature (C): 33
         Maximum Temperature (C): 42
         PHY Count: 1
         PHY Transfer Rate: 3.0Gbps


### pd end 3 2I:1:1 ###
    
por dSoultanis 26.02.2015 / 20:00

1 resposta

1

Você precisa de um delimitador / que termine o regexp antes da vírgula. E você precisa colocar aspas ao redor de todo o argumento de expressão para sed porque você tem espaços em ambos os regexps.

sed -e "/pd begin $(echo 3:1I:1:1|sed 0,/:/{s/:/' '/})/,/pd end $(echo 3:1I:1:1|sed 0,/:/{s/:/' '/})/p" /tmp/hp-raid-data-harvester.out
                                                      ^                                               ^
    
por 26.02.2015 / 21:43