Código de comando inválido com sed

3

Este é o comando que estou usando:

system_profiler | sed -n -e '/SATA/SATA Express:/,/Software:/ p'

Isso me dá esse erro

sed: 1: "/SATA/SATA Express:/,/S ...": invalid command code S

Não vejo por que não funciona, especialmente quando este comando quase idêntico funciona:

system_profiler | sed -n -e '/Hardware Overview:/,/Installations:/ p' 

Eu não sei? Não há razão para escapar de S.

    
por DisplayName 03.12.2015 / 11:55

2 respostas

3

Escape o / entre SATA e SATA Express: para torná-lo literal:

system_profiler | sed -n -e '/SATA\/SATA Express:/,/Software:/ p'

ou use um delimitador diferente usando esta sintaxe:

system_profiler | sed -n -e '\|SATA/SATA Express:|,/Software:/ p'
    
por 03.12.2015 / 12:05
0
/Hardware Overview:/,/Installations:/ p

Este código diz: imprima todas as linhas entre aquela que corresponde a Hardware Overview: e aquela que corresponde a Installations: .

O segundo código não significa nada: você não pode colocar SATA Express:/ após um endereço. sed aguarda um comando ali, ou vírgula seguida por outro endereço. O que você está tentando conseguir?

    
por 03.12.2015 / 12:04

Tags