escreve comandos sed para várias linhas

1

Estou me esforçando para aprender sed e encontrar essa situação

$ echo "abcd" | sed -n "/b/p"
abcd

funciona corretamente,

$ echo "abcd" | sed -n "
→ /b/p"
abcd

bom novamente, mas

$ echo "Abcd" | sed -n "/b
/p"
sed: -e expression #1, char 2: unterminated address regex

Qual é o problema com o relatório de erros?

    
por JawSaw 30.10.2018 / 03:43

3 respostas

1

/b/p é um comando completo do sed. Cada comando sed precisa estar em uma única linha. Quando você diz /b em uma linha, o sed trata como um erro de sintaxe. Você pode tentar por

echo "abcd" | sed -n "/b"

e veja o resultado. Você também pode tentar

echo "abcd" | sed -n "/b/p
> p"

e observe que após o comando estar completo, o próximo comando entra em vigor.

    
por 30.10.2018 / 04:02
1

sed padrões são fundamentalmente baseados em linhas, então espera que a segunda barra esteja na mesma linha que a primeira. De info sed :

Commands within a SCRIPT or SCRIPT-FILE can be separated by semicolons (';') or newlines (ASCII 10).

    
por 30.10.2018 / 03:59
1

A maioria dos comandos no Linux é fundamentalmente baseada em linhas, então espera que a segunda barra esteja na mesma linha que a primeira. No seu caso para trabalhar para o terceiro você pode usar o abaixo

$ echo "Abcd" | sed -n "/b\
 /p"
 Abcd
    
por 30.10.2018 / 05:28

Tags